##はじめに
以前書いた[Android]端末からサーバへ画像のアップロードのios版です。
こちらもいろいろ詰まったので、参考になればと思います。
###環境
- Xcode 11.3
- Swift 5
###ライブラリ
- Alamofire
そもそもこいつの導入でてこずりました。
参考:ライブラリの導入と、Alamofireの導入手順
https://qiita.com/0126/items/5d401acc219ac4f172d6
この方の記事を読めば大体はできると思いますが、自分が詰まったところのみ書いていきたいと思います。
- ターミナルで
carthage update --platform iOS
の実行 - "Bad credentials"と表示され進まない。
- Macキーチェインアクセスを開き
github.com
の削除。
- Macキーチェインアクセスを開き
- プロジェクト内にライブラリを追加
- Linked Frameworks and Libraryが無い。
- Framework,Libraries,and Embedded Content に変わっていた(?)
##ViewController.swift
【Swift3.0】Alamofireで画像&パラメータを送信
https://qiita.com/tosaka07/items/eff35f410723d0e94f98
ほぼこちらの方と同じです変更点は
Data型で使用します。UIImageJPEGRepresentationなどを使い、UIImageから変換しましょう。
の部分がSwiftのバージョンアップに伴って使えなくなったので、
let data:Data! = UIImageJPEGRepresentation(image!, 0.5) //これではなく
let data:Data! = image.jpegData(compressionQuality: 0.5) //これ
くらいでしょうか。完成形はこちらです。
ViewController.swift
import Alamofire
func PostImage(image:UIImage){
let data:Data! = image.jpegData(compressionQuality: 0.5)
Alamofire.upload(
multipartFormData: { multipartFormData in
multipartFormData.append(data, withName: "test", fileName: "test.jpeg", mimeType: "image/jpeg")
},
to: "送るURL",
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { res in
// 成功
let _ = response
print(res ?? "成功")
}
case .failure(let Error):
// 失敗
print(Error)
}
}
)
以上です。
PostImage(image:送りたいUIImage)
で使います。
受け取る側は[Android]端末からサーバへ画像のアップロードと同じです。