如何使用Perfect 2.0上传文件swift?

How to upload files with Perfect 2.0 swift?

我以前从未使用过任何类型的服务器端语言。我开始用 swift 来学习它。所以如果我问了一些愚蠢的问题,我提前道歉。

故事是这样的

我要上传文件到

<path to my project>/Resources/fileuplaods

我正在关注 Perfect 2.0 文档,这是我的代码:-

routes.add(method: .post, uri: "/webroot/uploads") { (request, response) in

let fileDir = Dir("./Resources/fileuploads")
print("fileDir - \(fileDir)")
do {
    try fileDir.create()
}
catch {
    print(error)
}

if let uploads = request.postFileUploads , uploads.count > 0 {
    var ary = [[String : Any]]()
    for upload in uploads {
        ary.append([
            "fieldName":upload.fieldName,
            "contentType":upload.contentType,
            "fileName":upload.fileName,
            "fileSize":upload.fileSize,
            "tmpFileName":upload.tmpFileName,
            ])

        let thisFile = File(upload.tmpFileName)
        do {
            let _ = try thisFile.moveTo(path: fileDir.path + upload.fileName , overWrite: true)
        }
        catch {
            print(error)
        }
    }
    print("ary - \(ary)")

}
response.setBody(string: "API Call uploads")
response.completed()
}

以下是我的输出:-

fileDir - Dir(internalPath: "./Resources/fileuploads/")
fileError(21, "Is a directory /Users/username/Documents/flone/fltwo/projname/Packages/PerfectLib-2.0.0/Sources/PerfectLib/File.swift moveTo(path:overWrite:) 286")
ary - [["contentType": "image/jpeg", "fileSize": 18587, "fileName": "", "fieldName": "", "tmpFileName": "/tmp/perfect_upload_rodB53"]]

我做错了什么?

找到问题了。实际上我不想在目标目录中添加文件名。

必须替换

thisFile.moveTo(path: fileDir.path , overWrite: true)

thisFile.moveTo(path: fileDir.path + upload.fileName , overWrite: true)