swift - 使用 Alamofire 5.0 swift 5 从 UIImagePickerController 将图像上传到服务器
问题描述
我想问一下如何使用 Alamofire 5.0 和 swift 5 从 UIIMagePicker 控制器将图像上传到服务器。
这是我的代码,它并没有真正起作用
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
let imageData = Data(pickedImage.pngData()!)
let photo = UIImage.init(named: "photo")
let parameters: [String: String] = ["Benutzername": "lina.str"] //var parameters: [String: Any] = [:]
AF.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imageData, withName: "picture", fileName: "image", mimeType: "image/jpg")
for (key,value) in parameters {
multipartFormData.append((value ).data(using: .utf8)!, withName: key)
}
guard let image = photo else { return }
let jpegData = image.jpegData(compressionQuality: 1.0)
multipartFormData.append(Data((jpegData)!), withName: "photo")
}, to: "https://mydomain/ajax/Upload.php")
.responseString { response in
debugPrint(response)
}
}
dismiss(animated: true, completion: nil)
}
问题是文件没有上传图片。
解决方案
检查这个...
{
let url = "https://mydomain/ajax/Upload.php"
let imgData = imageDev.jpegData(compressionQuality: 0.1)!
let parameters = ["Benutzername": "lina.str"]
//Optional for extra parameter
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy-hh-mm-ss"
let dateString = dateFormatter.string(from: Date())
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imgData, withName: "picture",fileName: "uploads"+dateString+".jpg", mimeType: "image/jpg")
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
} //Optional for extra parameters
},
to:url,method:.post)
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("Upload Progress: \(progress.fractionCompleted)")
})
upload.responseJSON { response in
if let result = response.result.value as? [String : Any]
{
}
}
case .failure(let encodingError):
print(encodingError)
}
}
}
推荐阅读
- jenkins - Jenkins - 从 Artifactory 下载和计算的 MD5 校验和不同于原始
- swift - 使用 to 和 from 日期过滤数组
- sql - How to use dynamic table in nested for loop in oracle pl sql
- reactjs - Multiple React Apps in a single LoadBalancer on GKE
- javascript - How to call a function from a seperate file and controller in angular js ? is it possible?
- python - 为什么我不能卷曲并在我的 Jupyter 笔记本中播放 .wav 文件?
- java - Saving a Dictionary to .txt file in Scala
- python - 如何在不使用装饰器的情况下运行一次函数?
- javascript - 传单总是在点击事件后居中地图
- java - Mockito 可以捕获实现中声明的变量的参数吗?