我正在开发一个使用多种尖端WebKit功能的webapp。它实质上是这样的:使用FileReader
读取本地文件,使用JavaScript解压缩库将每个文件解压缩为字符串,并使用XMLHttpRequest对每个文件进行POST。这适用于文本文件,但遗憾的是它会破坏二进制文件(在本例中为图像)。 Firefox有一个sendAsBinary
方法可以解决这个问题,但它是非标准的,更重要的是,它不适用于我们依赖其他功能的WebKit / Chrome。
有一些解决方法,到目前为止,它们都不适用于我:
BlobBuilder
,将字符串附加到构建器,并使用getBlob
获取要上传的blob(as recommended在Chrome问题主题中关于此问题)我正在寻找的,最重要的是,它是一个前向兼容的解决方案。谢谢!
答案 0 :(得分:6)
我遇到了同样的问题。
这个对我有用:
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);
}
答案 1 :(得分:1)
您可以使用base64对其进行编码并在服务器上对其进行解码。