1,準備參數php
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,開始上傳swift
//所有代碼以下 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部分代碼
官方解釋以下
後端代碼