Node.js 用于上载多部分的NodeJs服务器实现

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

我的Swift 3客户代码:

    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代码中在哪里添加字段名“照片”。有什么想法吗?