2

可能な限り基本的な例を作成しました。2 GB を超える巨大なファイルをサーバーにアップロードしようとしましたが、Firefox でのみエラーが発生します。Chromeでは問題なく動作するようです。「エラー: 接続が壊れました」のようなメッセージが表示されます。誰かが私にその理由とそれについて何ができるかを説明してもらえますか?

var http       = require("http");
var url        = require("url");

http.createServer(function (request, response) {
    switch(url.parse(request.url).pathname) {
        case "/":
            displayForm(request, response);
            break;
        case "/upload":
            response.writeHeader(200, {"Content-Type":"text/html"});
            response.end(
                '<h1>File Uploaded!</h1>'
            );
            break;
    }
}).listen(1234);

var displayForm = function(request, response) {
    response.writeHeader(200, {"Content-Type":"text/html"});
    response.end(
        '<form action="/upload" method="post" enctype="multipart/form-data">' +
            '<input type="file" name="uploadFile">' +
            '<input type="submit" value="Upload!">' +
        '</form>'
    );
};

編集: Chrome ではなくFirefoxでのみ発生することに気付きました!

4

1 に答える 1

2

このような大きなファイルの場合は、でファイルを読み取り、またはFileReaderで小さなバイナリピースにチャンクし、プログレスバーを使用してファイルをチャンクごとに転送し(Socket.ioによって)、サーバー上のチャンクを連結することをお勧めします。最後のチャンクが送信されたとき-バックエンドに完全なファイルがあります。BlobBlobbuilder

接続が切断された場合に転送を続行するために、現在のチャンク番号をcookie/LocalStorageに保存することもできます。

PS古代のIEやその他のたわごとには、Blobを使用するためのフラッシュプラグインがあります。グーグルで検索してください。

さまざまなブラウザのPOSTリクエストによるPSS最大ファイルサイズ:http://motobit.com/help/scptutl/pa98.htm

于 2012-10-29T16:16:02.570 に答える