我试图使用Fetch API上传大文件,当我在Chrome中发布大于128MB的数据时,我遇到了一个问题,在Firefox中超过256MB。我的问题是,有没有办法通过Chrome或firefox的配置来增加这个最大值?我只是做错了吗?是否有更好的方法来异步发布大型数据?
这里有一个简短的例子来说明这个问题:https://jsfiddle.net/hspw4bzo
function performFetch() {
const megabytes = document.getElementById( 'megabytes' ).value * 1;
const largeString = (new Array(megabytes * 1024 * 1024 )).join("x");
const options = {
redirect: 'follow',
method: 'POST',
body: largeString
};
fetch( 'https://jsfiddle.net/', options ).then( () => {
console.log( 'success' )
} )
}
当你点击“Go”按钮时,它将启动一个大小为128MB的POST请求。在Chrome中,这会导致框架崩溃。
2条答案
按热度按时间pu3pd22g1#
我发现,当发布大量数据时,使用
Blob
可以减轻firefox抛出的内存不足错误和Chrome中的崩溃。在查看了其他答案here和here之后,我到达了Blob
用法mrwjdhj32#
不应将文件作为字符串上传;这也适用于旧的好
XMLHttpRequest
。你可能会遇到服务器或浏览器的限制(你目前面临的限制)。使用
Blob
的多部分上传,例如:例如:here: