LoginSignup
6
5

More than 3 years have passed since last update.

[Swift5]端末からサーバへ画像のアップロード

Last updated at Posted at 2020-01-23

はじめに

以前書いた[Android]端末からサーバへ画像のアップロードのios版です。
こちらもいろいろ詰まったので、参考になればと思います。

環境

  • Xcode 11.3
  • Swift 5

ライブラリ

  • Alamofire

そもそもこいつの導入でてこずりました。

参考:ライブラリの導入と、Alamofireの導入手順
https://qiita.com/0126/items/5d401acc219ac4f172d6

この方の記事を読めば大体はできると思いますが、自分が詰まったところのみ書いていきたいと思います。

  • ターミナルでcarthage update --platform iOSの実行
  • プロジェクト内にライブラリを追加
    • 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]端末からサーバへ画像のアップロードと同じです。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5