使用Alamofire的多部分表单数据上传显示服务器中缺少文件

时间:2018-08-23 07:12:45

标签: swift alamofire multipartform-data urlsession

我正在尝试使用Alamofire上传图片,响应显示成功,但图片没有上传。当我与后端开发人员进行调试时,请求中似乎缺少文件附件。但是,进度显示文件的上传详细信息。任何人都可以帮忙解决这里的问题。

class ImageUploadClient {
        class func upload(image: UIImage, to request: URLRequest) {
            let imgData = UIImageJPEGRepresentation(image, 0.5)!
            let filename = "file.jpeg"        

            Alamofire.upload(multipartFormData: { (multiPartData) in
                multiPartData.append(imgData, withName: filename, mimeType: "image/jpg")
            }, usingThreshold: UInt64(1024),
               with: request, encodingCompletion: { encodingResult in
                switch encodingResult {
                case .success(let request, let streamingFromDisk, let fileURL):
                    debugPrint(streamingFromDisk)   // Shows true
                    debugPrint(fileURL)             // Returns file url
                    debugPrint(request)

                    // upload progress closure
                    request.uploadProgress(closure: { (progress) in
                        print("upload progress: \(progress.fractionCompleted)")
                        // here you can send out to a delegate or via notifications the upload progress to interested parties
                    })

                    // response handler
                    request.validate()
                        .responseJSON(completionHandler: { (response) in
                            switch response.result {
                            case .success(let value):
                                debugPrint(value)

                            case .failure(let err):
                                debugPrint(err)
                            }
                        })

                // encodingResult failure
                case .failure(let error):
                    debugPrint(error)
                }
            })
        }
    }

1 个答案:

答案 0 :(得分:1)

尝试通过添加图像的文件名

像这样

withName 密钥将包含服务器上图像的密钥名称

let profileKey = "profileImage"

multiPartData.append(imgData, withName: profileKey, fileName: filename, mimeType: "image/jpg")