Node.js 用于上载多部分的NodeJs服务器实现
我的Swift 3客户代码:Node.js 用于上载多部分的NodeJs服务器实现,node.js,swift3,multipartform-data,Node.js,Swift3,Multipartform Data,我的Swift 3客户代码: Alamofire.upload(multipartFormData: { (multipartFormData) in let path = "\(Bundle.main.resourcePath!)/images" let all = try? FileManager.default.contentsOfDirectory(at: URL(string: path)!, includingPropertiesForKeys
Alamofire.upload(multipartFormData: { (multipartFormData) in
let path = "\(Bundle.main.resourcePath!)/images"
let all = try? FileManager.default.contentsOfDirectory(at: URL(string: path)!, includingPropertiesForKeys: nil, options: [])
let filtered = all!.filter { $0.pathExtension == "jpg" }
for item in filtered {
let url = URL(fileURLWithPath: item.path, isDirectory: false)
multipartFormData.append(url, withName: item.path)
}
}, to: "http://localhost:3000/upload") {
(encodingResult) in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
}
我的服务器代码:
app.post('/upload', (req,res) => {
console.log(req.files)
res.send('{"status":"ok"}')
})
但是req.files是未定义的。我想知道原因是什么。如何实现NodeJs
2017年6月26日编辑(已解决!):
按照Svenskunganka的建议,我将multer添加到我的NodeJs代码中:
const multer = require('multer')
const upload = multer({ dest: 'uploads/' })
app.post('/photos/upload', upload.array('photos', 12), (req, res) => {
console.log(req.files)
res.send('{"status":"ok"}')
})
我的swift代码:
Alamofire.upload(multipartFormData: { (multipartFormData) in
let path = "\(Bundle.main.resourcePath!)/images"
let all = try? FileManager.default.contentsOfDirectory(at: URL(string: path)!, includingPropertiesForKeys: nil, options: [])
let filtered = all!.filter { $0.pathExtension == "jpg" }
for item in filtered {
let url = URL(fileURLWithPath: item.path, isDirectory: false)
multipartFormData.append(url, withName: "photos", fileName: url.lastPathComponent, mimeType: "image/jpeg")
}
}, to: "http://localhost:3000/upload") {
(encodingResult) in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
}
那么它工作得很好。需要记住的一点是,
upload.array('photos',12)
中的12是将上载的多部分的最大数量。如果该数字大于12,则服务器将出现“未定义”错误。您必须在Express中安装multer中间件,请参见我的回答:看起来不错。但我不知道如何使用Multer。获取错误:将“upload.array('photos',12)”添加到我的nodejs代码时出现意外字段。我不知道在我的swift代码中在哪里添加字段名“照片”。有什么想法吗?