Firefox是唯一支持sendAsBinary方法的吗?
答案 0 :(得分:3)
目前,我认为只有FF3 +支持此功能,但 Chrome 有workaround。
答案 1 :(得分:2)
http://code.google.com/p/chromium/issues/detail?id=35705周围的链接非常令人困惑,但我认为Chrome 8上没有针对POST二进制数据的解决方法。
您可以将数据转换为base64并上传,但服务器必须能够对其进行解码。
Chrome 9(目前在Dev频道,甚至还没有测试版)可以让你做XmlHttpRequest.send(blob),其中blob的字节按原样发送(不转换为utf-8),所以非标准的XmlHttpRequest。二进制文件上传不需要sendAsBinary()。
必须在成功的FileReader.readAsBinaryString()之后,从evt.target.result中的“binary”字符串创建此blob。这需要使用在Chrome 8中不可用的ArrayBuffer和Uint8Array。
答案 2 :(得分:1)
据我所知,是的,只有Firefox支持它。它不是W3C standard的一部分,因此无法保证任何其他浏览器都支持它。
答案 3 :(得分:1)
我有同样的错误,但我也在使用Prototype.js。似乎它有一些地图功能的替代品,它为我Object ..file data here.. has no method 'each'
抛出TypeError
所以我用这个替换
//fix sendAsBinary for chrome
try {
if (typeof XMLHttpRequest.prototype.sendAsBinary == 'undefined') {
XMLHttpRequest.prototype.sendAsBinary = function(text){
var data = new ArrayBuffer(text.length);
var ui8a = new Uint8Array(data, 0);
for (var i = 0; i < text.length; i++) ui8a[i] = (text.charCodeAt(i) & 0xff);
this.send(ui8a);
}
}
} catch (e) {}
答案 4 :(得分:0)
Chrome的解决方法在以下网址解释: