用最新的 Alamofire(swift 4.1) (帶參數)post方法上傳圖片到服務器

用最新的 Alamofire(swift 4.1) (帶參數)上傳圖片到服務器

1,準備參數

let image = UIImage(named: "xxx")
//將圖片轉化爲JPEG類型的data 後面的參數是壓縮比例
let jpegImage = UIImageJPEGRepresentation(image!, 0.5)
//要傳的參數(比如我們帶用戶的加密uid)
 let uid = ["uid" : user.uid]
 let ecodeUid = EncryptionHelper.getParamsString(uid as [String : AnyObject])
 //將參賽轉化爲data
let ecodeData = ecodeUid.data(using: .utf8)

2,開始上傳

//全部代碼如下
Alamofire.upload(multipartFormData: { (multipartFormData) in
    multipartFormData.append(ecodeData!, withName: "data")
    multipartFormData.append(jpegImage!, withName: "avatar", fileName: "avatar"+".jpeg", mimeType: "image/jpeg")
            }, to: "https://www.ka5188.com/app/api/v1/user/uploadImg" , encodingCompletion: { encodingResult in
                ws!.hideLoading()
                switch encodingResult {
                case .success(let upload, _, _):
                    upload.responseJSON { response in
                        if let data = response.data {
                            let responseJson = JSON(data: data)
                            if responseJson["status"].intValue == 1 {
                                //上傳成功,刷新當前頭像
                                }
                            } else {
                               let msg = responseJson["msg"].stringValue
                               self.showMessage(msg)
                            }
                        }
                    }
                case .failure(let encodingError):
                    log.debug(encodingError)
                    self.showMessage("上傳圖片失敗")
                }
            })

說明和注意點

//需要注意的地方 
 multipartFormData.append(ecodeData!, withName: "data")
//第一個參數"ecodeData",就是我們加密的二進制uid
/第二個參數"data"
服務端以這個字段名獲取加密的uid(個人以爲應該用"uid")

multipartFormData.append(jpegImage!, withName: "avatar", fileName: "avatar"+".jpeg", mimeType: "image/jpeg")
//帶一個參數"jpegImage",就是我們加密的二進制圖片流
//帶二個參數"withName",後臺通過西字段來獲取圖片
//帶三個參數"fileName",後臺檢圖片類型的,主要是後綴名
//帶四個參數"mimeType",傳輸的文件類型。
注 : 1,開始由於第二個參數和第三個參數弄混了,導制上傳失敗
      2,由於第三個參數沒有加後綴".jpeg",導致後臺輸出(文件格式不支持)
      3,第三個參數mimeType 傳入類型是圖片
      下面給出官方解釋,還有我們後臺php部分代碼
官方解釋如下

image

後端代碼

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章