gpt4 book ai didi

ios - 如何使用带 token 和参数的 Alamofire 上传图像?

转载 作者:行者123 更新时间:2023-11-28 06:12:45 25 4
gpt4 key购买 nike

我用Alamofire上传图片,但是上传不成功。
我也带了token和参数给服务器。
我不知道我是否正确添加了 token 和参数。
我使用 Alamofire 有什么问题?
有什么建议吗?谢谢。

func uploadWithAlamofire(image:UIImage, imageData:Data, imageUrl:URL) {        
let parameters = ["avatar":imageData]

Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imageData, withName: user.id, fileName: "\(user.id).jpg", mimeType: "image/jpg")

for (key, value) in parameters {
multipartFormData.append(value, withName: key)
}
}, to: apiUrl , method: .put, headers: ["Authorization": "Bearer \(token)"],
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.response { [weak self] response in
guard self != nil else {
return
}
debugPrint(response)
}
case .failure(let encodingError):
print("error:\(encodingError)")
}
})
}


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

photoImage = info[UIImagePickerControllerOriginalImage] as! UIImage
photoImageView.image = photoImage

let imageName:String = user.id + ".jpg"
let documentsPath = NSHomeDirectory().appending("/Documents/Icon/")
let imagePath = documentsPath.appending(imageName)
let imageUrl = URL(fileURLWithPath: imagePath)
print("imageUrl is here:\(imageUrl)")

let imageData:Data = UIImageJPEGRepresentation(photoImage, 0.001)!

do {
try imageData.write(to: imageUrl,options: .atomic)
} catch let error {
print(error)
}

uploadWithAlamofire(image: photoImage, imageData: imageData, imageUrl: imageUrl)

self.dismiss(animated: true, completion: nil)
}

最佳答案

试试这个:

func uploadImageWith(param params:Dictionary<String,String>,image:UIImage?,handler:@escaping ((Dictionary<String,Any>?,Int) -> Void)) {
// let keyJson = "json".dataUsingEncoding(NSUTF8StringEncoding)!
print("Params:\(params)")
let BASE_URL = "http://"
Alamofire.upload(
multipartFormData: { multipartFormData in
for (key, value) in params {
multipartFormData.append(value.data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: key)
}

if image != nil{
let imgData = UIImageJPEGRepresentation(image!, 0.5)
if imgData != nil {
multipartFormData.append(imgData!, withName: "photo_upload", fileName: "file.png", mimeType: "image/png")
}
}
},
to: BASE_URL,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in

switch response.result {
case .success:
if let jsonDict = response.result.value as? Dictionary<String,Any> {
print_debug("Json Response: \(jsonDict)") // serialized json response
handler(jsonDict,(response.response!.statusCode))
}
else{
handler(nil,(response.response!.statusCode))
}
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Server Response: \(utf8Text)") // original server data as UTF8 string
}
break
case .failure(let error):
handler(nil,(response.response!.statusCode))
break
}
}
case .failure(let encodingError):
print(encodingError)
}
}
)
}

使用

uploadImageWith(param: ["key":"value"], image: UIImage(name:"icon")) { (response, statusCode) in
print(response)
}

您必须传递参数和图像对象,并在闭包中以字典对象的形式获得响应。

关于ios - 如何使用带 token 和参数的 Alamofire 上传图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46069800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com