【swift】AFNetworkingで複数ファイルをアップロードする方法メモ
はじめに
余談ですが当初は、ネットワーク系のライブラリはAlamofireを使っていたのですが、xcode7にしてSwift2になったらビルドできなくなりました。Alamofireのバージョンをあげたらビルドは通るようにはなったのですが、ios8以上とういことでした。
客の要望でios7はまだきれないとのことで、別のライブラリを使うほかなくて結局AFNetworkingにおきかえることにしました
で、今回やりたかったのはこれを使ってmultipart形式で複数ファイルをアップロードするということでした。
実装
ApiにはBasic認証もかかっているので、ついでにメモしておきます
let url = "http://example.com/upload" let parameters: Dictionary<String,AnyObject> = ["key1": "value1", "key2": "value2"] // 画像以外に送りたいパラメータ let images: Dictionary<String,UIImage> = ["image1": image1, "image2": image2] // 画像データ // Basic認証の情報 let user = "user" let pass = "pass" let manager: AFHTTPRequestOperationManager = AFHTTPRequestOperationManager() manager.requestSerializer.setAuthorizationHeaderFieldWithUsername(user, password: pass) manager.POST(url, parameters: parameters, constructingBodyWithBlock: { (data) in // 画像データを追加 // htmlの<input type="file" ・・・>の部分 for (key, value) in images { let name = key let imageData = NSData(data: UIImageJPEGRepresentation(value, 1)!) data.appendPartWithFileData(imageData, name: name, fileName: name, mimeType: "image/jpeg") } }, success: { (operation: AFHTTPRequestOperation!, responsobject: AnyObject!) in // アップロード成功時の処理 }, failure: { (operation, error) in // アップロード失敗時の処理 })
以上です