我正在尝试使用JavaScript中的$that = $this;
$this->template = preg_replace_callback('/#module=(\w+)#/i', function ($m) use ($that) {
return $that->module($m[1]);
}, $this->template);
发送文件。为此,我将XMLHttpRequest()
与FileReader
一起使用。
我的代码以类似的结尾结束:
readAsArrayBuffer()
现在,根据浏览器/计算机,当我尝试将// 'content' from readAsArrayBuffer
var xhr = new XMLHttpRequest();
xhr.open("POST", "url", true);
xhr.send(content);
与大型ArrayBuffer(例如1GB文件)一起使用时,它会崩溃浏览器......
这是一个演示:https://codepen.io/Aymkdn/pen/xXZMwV(只需单击“测试”按钮)
此演示创建1GB的ArrayBuffer并尝试将其上传到某个URL。我在3台计算机上试用了它,最后是Chrome和Firefox。 100%的Chrome浏览器崩溃,66%的Firefox浏览器崩溃。
我在这里遗漏了什么吗?传递给send(ArrayBuffer)
的数据是否有大小限制?
由于
答案 0 :(得分:0)
经过不同的测试,似乎很简单的方法是发送Blob
而不是ArrayBuffer
。
// 'content' from readAsArrayBuffer, so it's an ArrayBuffer
var xhr = new XMLHttpRequest();
xhr.open("POST", "url", true);
xhr.send(new Blob([content])); // transform ArrayBuffer into Blob
在这种情况下,浏览器不再崩溃了!