2016-10-04 5 views
5

生成されたスイフトクライアントを使用してイメージをポストします。私はこれを指定するための最良の方法だと思うの研究の多くは後:生成されたスワッガーコードからの迅速なクライアントによる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タイプです。その理由は、特にUIImagePickerControllerでカメラから写真を撮影した場合、UIImageのうちNSURLを取得することは非常に難しいようです。

また、パラメータの型を文字列に変更し、イメージを文字列に変換するためのオーバーヘッドが増えるため、base64エンコーディングを使用します。

  • yamlの仕様が正しいことを誰かが確認できますか? (私はファイルタイプを選択しています。これは、写真をアップロードするために使用できる唯一のデータタイプが、Byteフォーマットの文字列ですが、文字列の写真を変換するオーバーヘッドが発生するためです。
  • 実際に正しい場合は、もしも、UIImageからNSURLを取得する方法があれば誰にも知られていますが、この2番目の質問は存在しますが、[Getting the URL of picture taken by camera with Photos Frameworkの回答はURLを返さず文字列の識別子を返します。その後、ちょうどハックようだNSURLを取得するためにそれを再度取得する。 は、だから私はNSDataタイプを受け入れるように生成された実装を変更する必要があり、またはあなたが提案する、より良いものを持っていますか?
+0

どのように問題を解決しましたか? – Malder

答えて

0

執筆時点でのSwagger APIのように見えますが、Base64はNSDataをポストにエンコードしています。したがって、Base64を使用したくない場合や、スワッガーで生成されたコードを拡張/変更したくない場合は、このことを避けてください。

バイナリデータを送信するには、ローカルファイルのNSURLが必要です。

関連する問題