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>'
    );
};

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

4

1 回答 1

2

对于如此大的文件,我建议您使用 读取文件,使用or将FileReader其分块为小的二进制文件,并使用进度条逐块传输(通过 Socket.io)文件块,连接服务器上的块。发送最后一个块时-您在后端获得了完整文件。BlobBlobbuilder

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

PS 对于古老的 IE 和其他垃圾,有使用 Blob 的 flash 插件,谷歌它。

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

于 2012-10-29T16:16:02.570 回答