将MultipartformData传递给Alamofire.upload

时间:2016-11-15 11:11:58

标签: swift3 alamofire

我要转换一个包含不同类型数据的大项目,需要作为多部分上传。为此,我创建了几个构建所需MultipartFormData个对象的结构。

某些上传内容较小,其他内容较大。所以我正在研究使用Alamofire的.upload()方法(第4节)。

该方法有一个闭包,用于将部分附加到multipartFormData对象。

Alamofire.upload(
   multipartFormData: { multipartFormData in
            // do stuff here
   }

但我还没有办法将现有的MultipartformData对象传递给此方法。

应该是这样的:

self.parts = MultipartformData()
...
// do stuff with self.parts
...

Alamofire.upload(
   multipartFormData: { multipartFormData in
            multipartFormData = self.parts
   }

但是,由于我收到以下错误消息,因此无效:

  

参数可能没有' var'符

我正在使用XCode 8.1,Alamofire 4和Swift 3。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

let image = UIImage.init(named: "myImage")
 let imgData = UIImageJPEGRepresentation(image!, 0.2)!

 let parameters = ["name": rname]

Alamofire.upload(multipartFormData: { multipartFormData in
        multipartFormData.append(imgData, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
        for (key, value) in parameters {
                multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            }
    },
to:"mysite/upload.php")
{ (result) in
    switch result {
    case .success(let upload, _, _):

        upload.uploadProgress(closure: { (progress) in
            print("Upload Progress: \(progress.fractionCompleted)")
        })

        upload.responseJSON { response in
             print(response.result.value)  
        }

    case .failure(let encodingError):
        print(encodingError)  
    }
}