我有一个基于dropzone的文件上传器。我将在下面提供它的代码。我先解释一下这个问题:
我正在使用ubuntu机器,我的服务器代码,即node.js,基于multer库,也运行在ubuntu机器上,前端运行在windows机器上的apache服务器上(我说所有这些因为它可能会有所作为,我希望它不会。)
每当我在我的ubuntu机器上传文件时,它一帆风顺。每当我在任何Windows机器上传文件时,文件上传都会完成(进度条以正常方式从0到100),但请求永远不会到达服务器(至少它永远不会出现在服务器日志中)。
dropzone表单的HTML:
<div id="shp" class="uploader">
<form enctype="multipart/form-data" action="http://serverip:9601/uploadpath"
method="post"
class="dropzone"
id="dropzone">
</form>
<button id="submit">Upload</button>
</div>
Javascript(客户端):
Dropzone.options.dropzone = {
// Prevents Dropzone from uploading dropped files immediately
acceptedFiles: ".zip",
addRemoveLinks: true,
autoProcessQueue: false,
init: function() {
var submitButton = document.getElementById("submit");
var dropzone = this; // closure
submitButton.addEventListener("click", function() {
totalProgress = 0;
dropzone.processQueue(); // Tell Dropzone to process all queued files.
});
},
maxFiles : 1,
parallelUploads: 10000,
paramName: myParamName,
uploadMultiple: false
};
function myParamName(){
return "file";
}
Node.js的:
router.post('/uploadpath', upload.single('file'), (req, res, next) => {
//Do some stuff
res.status(200).send({ success: true, message: 'Upload Completed!' });
});
答案 0 :(得分:1)
原来它与dropzone无关,但其他一些我没有在这里发布的东西。我有一些中间件正在验证上传文件的mime类型,在我的情况下这是一个zip文件(我只接受它们)。
在windows中,zip文件的mime类型是:application / x-zip-compressed 但是在ubuntu中,zip文件的mime类型是:application / zip
多么方便。