我想提供在我的 Web 应用程序中上传大小超过 1 GB 的 zip 文件的功能。我正在使用服务器端的 Multer 节点模块使用 nodejs 版本 8.11.3。在本地测试此功能时,它可以正常工作,但是当我在任何云服务器上托管我的应用程序时(无论云提供商如何),它都无法正常工作,导致浏览器无响应。通过网络上传文件时似乎存在问题。通过提琴手/邮递员请求尝试但没有成功。
已经遵循链接中提到的解决方案:
尝试分块发送文件数据导致许多 http 请求以浏览器崩溃结束 https://hpbn.co/xmlhttprequest/
尝试使用 websockets 发送数据(结果相同) https://github.com/rico345100/socket.io-file-client
尝试过 FTP 方法 http://ftp.apixml.net/
// 服务器端代码
let limits = {
files: 1,
fileSize: 5000 * 1024 * 1024
}
uploads = multer({
dest: "/uploads/",
limits: limits,
fileFilter: function(req, file, cb) {
...
}
});
// 客户端代码
var fd = new FormData();
fd.append("fileToUpload", blobFile);
var xhr = new window.XMLHttpRequest();
$.ajax({
url: `/upload`,
type: "POST",
data: fd,
processData: false,
contentType: false,
xhr: function() {
},
success: function(response) {
},
error: function(errorMsgResp) {
}
});
预期的结果是即使文件大小超过 1GB,也应该上传文件而没有任何性能瓶颈。