[英]How to upload UIImage with some key and values to server with Alamofire
我正在使用alamofire將圖片以及一些參數上傳到服務器,但是我如何雄心勃勃地引用成員上傳錯誤。
可能是什么問題? 我的代碼是。
public var selectedImage: UIImage?
...
let parameters: Parameters = ["user_id": "1","description": "test"];
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(selectedImage, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
} //Optional for extra parameters
}, to:"mysite/upload.php")
.uploadProgress { progress in // main queue by default
print("Upload Progress: \(progress.fractionCompleted)")
}
.downloadProgress { progress in // main queue by default
print("Download Progress: \(progress.fractionCompleted)")
}
.responseJSON { response in
debugPrint(response)
}
試試這個對我來說很好。
let selectedImage: UIImage?
let parameters: Parameters = ["user_id": "1","description": "test"];
Alamofire.upload(multipartFormData: { MultipartFormData in
for (key, value) in parameters {
MultipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
let imgData = UIImageJPEGRepresentation(selectedImage!,1)
MultipartFormData.append(imgData!, withName: "fileset", fileName: "file.jpeg", mimeType: "image/jpeg")
}, to: "mysite/upload.php") { (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (Progress) in
print("Upload Progress: \(Progress.fractionCompleted)")
})
upload.responseJSON { response in
print(response.result.value!)
}
case .failure(let encodingError):
print(encodingError.localizedDescription)
break
}
}
您正在上傳UIImage本身! 這是不正確的。
相反,您必須先將其轉換為數據,然后再上傳...
所以在這行代碼之前
multipartFormData.append(selectedImage, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
嘗試從所選圖像中獲取數據:
var imageData : Data?
if let image = selectedImage{
imageData = UIImageJPEGRepresentation(image , 0.7)!
}
然后,您可以上傳它:
if let data = imageData{
multipartFormData.append(data,"fileset",fileName: "file.jpg", mimeType: "image/jpg")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.