我正在将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发送到服务器?
答案 0 :(得分:3)
您正尝试将图像数据转换为String
,假设它是UTF8数据。它不是,因此不会产生print(data.base64EncodedString())
。图像数据可能包含许多不可打印的字符。
作为替代方法,您可以从数据中打印base64编码的字符串:
df = pd.DataFrame({'hour': [9.0, 9.0, 9.0, 10.0],
'min': [12.0, 13.0, 55.0, 2.0],
'sec': [42.0, 30.0, 12.0, 5.0]})
>>> df
hour min sec
0 9.0 12.0 42.0
1 9.0 13.0 30.0
2 9.0 55.0 12.0
3 10.0 2.0 5.0