JavaScriptでXMLHttpRequest()
を使用してファイルを送信しようとしています。これを行うには、私はFileReader
とreadAsArrayBuffer()
を使用します。XMLHttpRequest.send()で大規模なArrayBufferがクラッシュする
// 'content' from readAsArrayBuffer
var xhr = new XMLHttpRequest();
xhr.open("POST", "url", true);
xhr.send(content);
さて、私は大規模なArrayBuffer(例えば1GBのファイル)でsend(ArrayBuffer)
を使用しようとすると、ブラウザ/コンピュータに依存し、それはブラウザをクラッシュ:
私のコードは、そのようなもので終わります。このデモでは、1ギガバイトのArrayBufferを作成し、いくつかのURLにアップロードしようとしhttps://codepen.io/Aymkdn/pen/xXZMwV(テストボタンだけをクリックしてください)
..ここ
はデモです。最後のChromeとFirefoxを使用して、3台のコンピュータで試しました。 Chromeブラウザの100%がクラッシュし、Firefoxブラウザの66%がクラッシュしました。
ここに何か不足していますか? send()
に渡されるデータのサイズ制限はありますか?
感謝の異なるテストの後
サーバーまたはWebconfigでは、uploadlimitを増やす必要があります。私はデフォルト設定が5メガバイトだと思う。 –
通常は大きなファイルを送信するときは、メモリにすべてをロードせずにチャンクをロードし、そのチャンクを送信する。これには、レジューム、プログレスバーなどの他の利点があります。両者が単純なプロトコルに同意しなければならないので、もう少し作業が必要です。しかし、長期的にはそれだけの価値があります。 – Keith
Alen>これはサーバー側ではないため、ブラウザは送信前にクラッシュします。 Keith>はい、私が使用しているサーバーはチャンクをサポートしていません:-( – AymKdn