gpt4 book ai didi

ios - 无法将 UIImage 编码为 POST 请求的数据

转载 作者:可可西里 更新时间:2023-11-01 00:56:01 26 4
gpt4 key购买 nike

我正在将 UIImage 转换为数据以通过 http POST 请求发送到服务器。在为请求准备正文时,函数 createBody 被调用,传递给该函数的图像数据是 UIImageJPEGRepresentation(image, 0.7)!

static func createBody(parameters: [String: String],
boundary: String,
data: Data,
mimeType: String,
filename: String) -> Data {

let body = NSMutableData()

let boundaryPrefix = "--\(boundary)\r\n"

for (key, value) in parameters {

body.appendString(boundaryPrefix)
body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString("\(value)\r\n")
}

body.appendString(boundaryPrefix)
body.appendString("Content-Disposition: form-data; name=\"file\"; filename=\"\(filename)\"\r\n")
body.appendString("Content-Type: \(mimeType)\r\n\r\n")
body.append(data) // theres something about appending this image data that is causing problems

body.appendString("\r\n")
body.appendString("--".appending(boundary.appending("--")))

print(body as Data)
print(String(data: data, encoding: .utf8) ?? "unable to print data")

return body as Data
}

控制台显示:

368185 bytes
unable to print data

当图像数据未附加到正文时,body 会毫无问题地打印出来。当附加图像数据时,它显然在那里,因为 body 的大小相当大(368185 字节对 191 字节),但下一行显示 unable to print data。这个 UIImage 数据不允许与正文中的其他文本一起编码,这是怎么回事?如果它与编码有关,那么我怎样才能让正文同时打印文本和数据,以及应该如何格式化才能通过 POST 发送到服务器?

最佳答案

假设它是 UTF8 数据,您正在尝试将图像数据转换为 String。它不是,因此不会生成 String。图像数据中可能包含许多不可打印的字符。

作为替代方案,您可以从数据中打印 base64 编码的字符串:

print(data.base64EncodedString())

关于ios - 无法将 UIImage 编码为 POST 请求的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176451/

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