我正在开发一个使用多个尖端 WebKit 功能的 Web 应用程序。它本质上是这样做的:读取本地文件FileReader
,使用 JavaScript 解压缩库将每个文件解压缩为字符串,并使用 XMLHttpRequest POST 每个文件。这对于文本文件非常有效,但不幸的是它会损坏二进制文件(在本例中为图像)。火狐有一个sendAsBinary
解决这个问题的方法,但它是非标准的,更重要的是,它不适用于我们依赖其他功能的 WebKit/Chrome。
有很多解决方法,但到目前为止,没有一个对我有用:
- 使用长字符串中的标头、边界等模拟文件上传请求(像这样).
- 在 xhr 对象上设置一堆标头(as such)
- 使用
BlobBuilder
,将字符串附加到构建器,并使用getBlob
获取要上传的 blob (按照推荐在 Chrome 问题线程中关于此)
最重要的是,我正在寻找的是向前兼容的解决方案。谢谢!
我有同样的问题。
这对我有用:
XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
function byteValue(x) {
return x.charCodeAt(0) & 0xff;
}
var ords = Array.prototype.map.call(datastr, byteValue);
var ui8a = new Uint8Array(ords);
this.send(ui8a.buffer);
}
检查这里:http://javascript0.org/wiki/Portable_sendAsBinary
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)