2016-10-04 85 views
5

我想使用生成的swift客戶端發佈圖像。大量的研發後,我想指定這個最好的方法是:從生成的swagger代碼中快速客戶端POST圖像

/user/profilepicture: 
    put: 
     description: | 
     upload profile picture of user 
     consumes: 
     - multipart/form-data 
     parameters: 
     - name: profilePhoto 
      in: formData 
      type: file 

生成的快捷客戶端功能的簽名是:

public class func usersProfilepicturePut(profilePhoto profilePhoto: NSURL? = nil, completion: ((error: ErrorType?) -> Void)) 

我遇到的問題是NSURL類型。原因是從UIImage中獲得NSURL似乎非常困難,特別是如果照片是從UIImagePickerController的相機拍攝的。

然後,我不想將參數的類型更改爲字符串,並使用base64編碼,因爲它增加了很多開銷將圖像轉換爲字符串。

  • 有人可以驗證我的yaml規範是否正確? (我正在選擇文件類型,因爲我可以用來上傳照片的唯一其他數據類型是字符串,格式爲Byte,但這會導致開銷將字符串中的照片轉換爲
  • 如果確實如此,有沒有人知道是否有辦法從UIImage得到NSURL。第二個問題存在,但是[Getting the URL of picture taken by camera with Photos Framework]中的答案沒有返回一個URL,而是一個字符串標識符。其他類似問題的答案都表明要保存圖像和然後再檢索它只是爲了得到一個NSURL似乎哈克。 所以我應該改變生成的實現來接受NSData類型,或者你有什麼更好的建議?
+0

你是怎麼解決你的問題的? – Malder

回答

0

看起來在編寫本文時,swagger API是將Base64編碼的NSData編入帖子。因此,如果您不想使用Base64或者不想擴展/修改Swagger生成的代碼,請避免這種情況。

發送二進制數據看起來像你需要本地文件的NSURL。

相關問題