【发布时间】:2019-07-13 05:12:28
【问题描述】:
我正在尝试在服务器上上传照片,我必须设置请求标头和参数。
我不知道如何设置第一个键“扫描”。 我尝试为扫描键设置图像本地路径,图像大小但没有结果。
我尝试用这种方式将图片上传到服务器:
Alamofire.upload(multipartFormData: { (multipartFormData) in
for (key, value) in params {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
}
if let data = imageData{
multipartFormData.append(data, withName: "image", fileName: "image.png", mimeType: "image/png")
}
}, usingThreshold: UInt64.init(), to: ApiClientURLs.photo, method: .post, headers: headers) { (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (Progress) in
print("Upload Progress: \(Progress.fractionCompleted)")
})
upload.responseJSON { response in
//self.delegate?.showSuccessAlert()
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization
// self.showSuccesAlert()
//self.removeImage("frame", fileExtension: "txt")
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
case .failure(let encodingError):
//self.delegate?.showFailAlert()
print(encodingError)
}
}
服务器端的同事告诉我这是分段上传的问题,并给我发了这个错误:
default message [scan]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile' for property 'scan'
标头和参数请求如下所示:
let headers: HTTPHeaders = [
"Content-type" : "multipart/form-data",
"X-Email" : decodedLoginModel.email ?? "",
"Token" : decodedLoginModel.jwt ?? ""]
var params: [String: Any] = [
//"scan" : imagePath
"contact_email": contact_email_switch,
"contact_mail": contact_mail_switch,
"contact_phone": contact_phone_switch,
"contact_sms": contact_sms_switch,
"required_id": Int.random(in:1111...1999) ]
你能帮我修复上传吗?
【问题讨论】:
-
使用与邮递员“扫描”相同的密钥
-
对于按键扫描我需要设置什么?
-
通过 Postman 和 Alamofire 查看实际的请求内容,看看它们有何不同,然后看看您需要如何形成您的请求。
标签: swift file-upload alamofire multipartform-data image-uploading