正如这里所解释的,https://stackoverflow.com/a/30624755/294884
[认为]图像的 JPEG 表示是 UTF-8 编码的字符串是错误的。它不是。它是任意二进制数据。 UTF-8 字符串不是任意的字节序列;关于哪些字节可以跟随其他字节有一些规则。
事实上,如何do你最好从图像中创建一个utf8数据,在Data
era?
日常用例采用 http 形式。
我做这样的事情,
formData.append( "Content-Disposition etc".(using: .utf8)! )
formData.append( "Content type etc".(using: .utf8)! )
// now let's add a #@@%$%$% image
let trueBinary = UIImageJPEGRepresentation(i, 0.10)!
print("the size seems to be \(trueBinary.count)")
let mystere = trueBinary.base64EncodedString(
options: .lineLength76Characters)
formData.append( mystere.data(using: .utf8)! )
But
A,这看起来很棘手,而且可能无论如何也不起作用。
B,“lineLength”概念对我来说没有任何意义,所以我只是猜测一些东西,然后在其中输入一些内容。
请注意,令人难以置信的是,如果您有Data
x 并添加一些字符串作为 utf 8 使用append
.....然后添加一个“真正的”二进制数据,例如 jpeg 表示形式x
...... 事实上它为零“x”——哎呀!(它不只是“不添加二进制”,它把 x 刮得一文不值。)
这条线有问题:
let mystere = trueBinary.count.base64EncodedString(
options: .lineLength76Characters)
问题是trueBinary
is a Data
, and trueBinary.count
is an Int
, and Int
没有base64EncodedString
方法。你要这个:
let mystere = trueBinary.base64EncodedString(
options: .lineLength76Characters)
至于“lineLength”概念:如果您不想,则不必指定行长度选项。可以说我不应该在您的问题中引用的答案中指定一个,因为HTTP 请求严格来说并不是 MIME 消息 and 不受 MIME 行长度限制。你可以这样做:
let mystere = trueBinary.base64EncodedString()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)