如何使用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)
我以前从未使用过任何类型的服务器端语言。我开始用 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)