Ios 使用Alamofire从gallery上传带有参数和标题的图像
我试图上传图像,但需要传递参数和标题,从谷歌获得了有关参数的帮助,但没有得到如何传递标题也。传递下面的代码,请引导 下面是我的代码:Ios 使用Alamofire从gallery上传带有参数和标题的图像,ios,swift,alamofire,multipartform-data,Ios,Swift,Alamofire,Multipartform Data,我试图上传图像,但需要传递参数和标题,从谷歌获得了有关参数的帮助,但没有得到如何传递标题也。传递下面的代码,请引导 下面是我的代码: if (request.requestType == "Multipart") { var strToken : String = "" if let access_token = UserDefaults.standard.string(forKey: "auth_token"){ let toke
if (request.requestType == "Multipart")
{
var strToken : String = ""
if let access_token = UserDefaults.standard.string(forKey: "auth_token"){
let tokenValue = String(format: "Token %@", access_token);
strToken = tokenValue
}
let headers: HTTPHeaders = [
"Authorization": strToken,
"Content-Type": "multipart/form-data"
]
let img = request.image
let imgData = UIImageJPEGRepresentation(img, 0.2)!
do{
let strURL = try strCompleteURL.asURL()
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imgData, withName: "image_path",fileName: "file.jpg", mimeType: "image/jpg")
for (key, value) in params {
multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
},
to:strURL)
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("Upload Progress: \(progress.fractionCompleted)")
})
upload.responseJSON { response in
if response.result.isSuccess {
print(response.result.value as Any)
if let data = response.data{
self.response.responseCode = response.response?.statusCode
self.processResult(data);
}
}
}
case .failure(let encodingError):
print(encodingError)
}
}
}
catch{
}
上面的代码尝试上载图像,但由于缺少标头而未成功,请指导如何传递标头和参数
谢谢嗨,我用过这样的标题
func uploadImage( image:UIImage, url:String, _ successBlock:@escaping ( _ response: JSON )->Void , errorBlock: @escaping (_ error: NSError) -> Void ){
let path = baseUrl + url
print(path)
let headers = ["authorization": AppData().token]
let imgData = UIImageJPEGRepresentation(image, 0.2)!
let URL = try! URLRequest(url: path, method: .post, headers: headers)
Alamofire.upload(multipartFormData: { (multipartFormData) in
multipartFormData.append(imgData, withName: "image",fileName: "file.jpg", mimeType: "file")
for (key, value) in params {
multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, with: URL) { (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)
if let value = response.result.value {
let json = JSON(value)
successBlock(json)
}
}
case .failure(let encodingError):
print(encodingError)
errorBlock(encodingError as NSError)
}
}
}
嗨,我用过这样的标题
func uploadImage( image:UIImage, url:String, _ successBlock:@escaping ( _ response: JSON )->Void , errorBlock: @escaping (_ error: NSError) -> Void ){
let path = baseUrl + url
print(path)
let headers = ["authorization": AppData().token]
let imgData = UIImageJPEGRepresentation(image, 0.2)!
let URL = try! URLRequest(url: path, method: .post, headers: headers)
Alamofire.upload(multipartFormData: { (multipartFormData) in
multipartFormData.append(imgData, withName: "image",fileName: "file.jpg", mimeType: "file")
for (key, value) in params {
multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, with: URL) { (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)
if let value = response.result.value {
let json = JSON(value)
successBlock(json)
}
}
case .failure(let encodingError):
print(encodingError)
errorBlock(encodingError as NSError)
}
}
}
Alamofire
.upload()
函数的可用参数比您使用的参数多。(这可以在其pod文件夹中的Alamofire.swift文件中看到)
在这里,您可以看到有一个未使用的标题参数
如果不亲自运行代码并检查所有内容,这将是我对标题位置的最佳假设。Alamofire
.upload()
函数的可用参数比您使用的要多。(这可以在其pod文件夹中的Alamofire.swift文件中看到)
在这里,您可以看到有一个未使用的标题参数
如果我不亲自运行代码并检查所有内容,这将是我最好的假设,说明你的头会去哪里这行的问题让URL=try!URLRequest(url:path,method:.post,headers:headers)出现了什么问题?我从api收到的响应是FAILURE:ResponseSerializationFaild(Alamofire.AFError.ResponseSerializationFailureReason.JSONSerializationFaild(Error Domain=NSCOCAerorDomain Code=3840“字符0周围的值无效”。UserInfo={NSDebugDescription=字符0周围的值无效。})▿ 失败:一个错误▿ responseSerializationFailed:ResponseSerializationFaileureReason可能是它的另一个问题。请检查postmani中的API响应,看看参数没有传入itProblem,这一行让URL=try!URLRequest(URL:path,method:.post,headers:headers)出现了什么问题?我从api收到的响应是失败:responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(错误域=NSCOCAErrorDomain代码=3840“字符0周围的无效值”。用户信息={NSDebugDescription=字符0周围的无效值。}))▿ 失败:一个错误▿ responseSerializationFailed:ResponseSerializationFaileureReason可能是其不同的问题。请将API响应检查到postmani中,以查看参数是否未传入