我已经将我的榜样作为基本可能。我尝试将超过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中!
答案 0 :(得分:2)
对于这样的大文件,我建议您使用FileReader
读取文件,将其与Blob
或Blobbuilder
的小二进制块进行块化,然后传输(通过Socket.io)文件块通过进度条的块,连接服务器上的块。当发送最后一个块时 - 你的后端有完整的文件。
如果连接中断,您还可以在cookie / LocalStorage中保存当前的块号以继续传输。
P.S。对于古老的IE和其他狗屎,有使用Blob的Flash插件,google it。
P.S.S不同浏览器的POST请求的最大文件大小:http://motobit.com/help/scptutl/pa98.htm