gpt4 book ai didi

ios - 为什么我无法将文件作为 Alamofire 中的参数值之一附加?

转载 作者:行者123 更新时间:2023-11-30 13:29:04 25 4
gpt4 key购买 nike

我想知道为什么我不能将文件作为参数值之一并在 Alamofire 中将参数作为上传请求发送。我尝试了这样的方法并且有效。

let parameters: [String : AnyObject ] = [
"email" : "abc@gmail.com",
"password" : "password",
"full_name": "XXX"]

let image: UIImage? = UIImage(named: "logo.png")

Alamofire.upload(
.POST,
"http://myurl.com/register",
multipartFormData: { multipartFormData in

for (key, value) in parameters {
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
}

if let imageData = UIImageJPEGRepresentation(image!, 1) {
multipartFormData.appendBodyPart(data: imageData, name: "profile_pic", fileName: "logo.png", mimeType: "image/png")
}
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
)

为什么我不能将图像作为参数值传递?还有为什么我需要更改 UIImageJPEGRepresentation 中的图像。

如果我将图像作为值传递而不更改表示形式,则会抛出错误,表明它不是 NSData 格式。

请注意,无论是否有图像,请求都应该通过,因为它是可选的。

最佳答案

如您所知,Alamofire 只是一个帮助您处理 NSURLRequest 的库。这是客户端通过 HTTP 请求与服务器通信的常见方式。其他平台(例如 Android、桌面或 Web...)也使用这种方式。所以它们必须是相同的格式。 post body 只接受简单的数据格式,如 String、Int 或 byte[]...它不知道什么是 UIImage,而是 NSData. NSData 是 byte[] 的一种格式。

因此,如果您想上传文本文件或视频,也必须将其转换为 NSData

希望这有帮助。

关于ios - 为什么我无法将文件作为 Alamofire 中的参数值之一附加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36788401/

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