2016-11-15 142 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工作不符合序列。我已經更新了我的問題,並更詳細地描述了我想要傳遞的內容。 –