上传HUGE文件> 2GB到nodejs(n Firefox)

时间:2012-10-29 16:09:33

标签: node.js file-upload

我已经将我的榜样作为基本可能。我尝试将超过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>'
    );
};

编辑:我刚刚意识到它只发生在 Firefox 中,而不是Chrome中!

1 个答案:

答案 0 :(得分:2)

对于这样的大文件,我建议您使用FileReader读取文件,将其与BlobBlobbuilder的小二进制块进行块化,然后传输(通过Socket.io)文件块通过进度条的块,连接服务器上的块。当发送最后一个块时 - 你的后端有完整的文件。

如果连接中断,您还可以在cookie / LocalStorage中保存当前的块号以继续传输。

P.S。对于古老的IE和其他狗屎,有使用Blob的Flash插件,google it。

P.S.S不同浏览器的POST请求的最大文件大小:http://motobit.com/help/scptutl/pa98.htm