2016-11-15 52 views
0

我必须将需要上传为多部分的不同类型的数据转换为相当大的项目。为此,我创建了几个构建需要的对象的结构。将MultipartformData传递给Alamofire.upload

部分上传量相当小,其他则较大。所以我正在研究使用Alamofire(v4)的.upload()方法。

该方法有一个闭包将零件追加到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 
    } 

但正如我收到以下错误消息不起作用:

参数可能没有足够的“变种”说明

我使用XCode 8.1,Alamofire 4和Swift 3.

谢谢!

回答

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) 
    } 
} 
+0

这并不为MultipartformData工作不符合序列。我已经更新了我的问题,并更详细地描述了我想要传递的内容。 –