ios - 我想使用 alamofire swift 5 将图像上传到多部分表单数据
问题描述
我想像邮递员一样将png图像上传到URL,我使用邮递员 邮递员截图
我使用此功能使用 Alamofire 使用 post 方法将 png 图像上传到 url 这是上传功能,但它返回错误代码 500 内部服务器错误,尽管它在邮递员中使用代码 200 成功
static func updateProfileImage(image : UIImage , result : @escaping()->()) {
if let user = UserDefaults.standard.string(forKey: "mail") , let imgData = image.pngData(){
Alamofire.upload(
multipartFormData: { multipartFormData in
multipartFormData.append("form-data".data(using: .utf8 ,allowLossyConversion: false)!, withName: "Content-Disposition")
//multipartFormData.append("name".data(using: .utf8 ,allowLossyConversion: false)!, withName: "fileUpload")
multipartFormData.append(imgData, withName: "fileUpload", mimeType: "image/png")
},
to: URLs.profileImage+user,method: .post,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.response { response in
print(response)
}
case .failure( _):
print("error")
}
}
)
}
解决方案
我有以下多部分数据请求的代码,希望对您有所帮助。
Alamofire.upload( multipartFormData: { multipartFormData in
// parameters is method arguments in my webs ervice call method
for (key, value) in parameters {
if let data = (value as! String).data(using: .utf8) {
multipartFormData.append(data, withName: key)
}
}
let imageData = image?.jpegData(compressionQuality: 0.5)
multipartFormData.append(imageData!, withName: "profile_image", fileName: "profileImage", mimeType: "image/jpeg")
// getURL(.addProfile) will create url, method from my structure
// getHeaders() will return required header from that method
}, to: getURL(.addProfile), headers: getHeaders(), encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.response(completionHandler: { (defaultDataResponse) in
guard let httpResponse = defaultDataResponse.response else {
completion(nil, defaultDataResponse.error)
return
}
if httpResponse.statusCode == 200 {
// Success Code
} else {
// Failed code
}
})
case .failure(let encodingError):
// Failed code.
}
})
推荐阅读
- python - 决策树的简单递归[Python]
- asp.net-mvc - 在 mvc 中编辑后无法保留原始值
- c# - 在 hangfire jobfilter 生命周期中处理 Simple Injector 异步范围
- ruby-on-rails - ubuntu 服务器(nginx+passenger+capistrano)上的 Rails 应用程序日志在哪里?
- r - R中的Beta回归模型
- python - Django不呈现表单字段
- soap - 使用失眠症来打肥皂电话
- python - {Python} 如何将字典转换为坐标?
- python - 将绘图树状图应用于文本数据
- r - 确保使用 {mongolite} 读取 MongoDB 数据时数据帧变为 tibbles