我使用Dropzonejs,我想做的事情基本上很简单。但我找不到任何关于它的文章。
因此,在发送文件时,我们会在令人讨厌的.exe和.php文件上触发错误。 dropzonejs接口显示X和错误消息。这是对的。问题是它仍然被抛入成功事件,并被上传。
uploader.on("sending", function (file, xhr, data) {
var aDeny = [ // deny file some extensions by default
'application/x-msdownload',
'text/php'
];
if($.inArray(file.type, aDeny) !== -1) {
this.defaultOptions.error(file, 'File not allowed: ' + file.name);
return false;
}
});
Evil.exe仍会出现在此成功事件中并上传。响应只有一个文件路径字符串,file.status成功。
uploader.on('success', function (file, response) {
getData({'dostuff'});
return file.previewElement.classList.add("dz-success");
});
所以在我发送'事件,如何防止文件出现在成功事件中?
更新:
谢谢!这就是我最终需要的:
var aDeny = [ // deny file some extensions by default
'application/x-msdownload',
'text/php'
];
Dropzone.options.uploadWidget = {
// more config...
accept: function (file, done) {
if ($.inArray(file.type, aDeny) !== -1) {
done("This file is not accepted!");
}
else {
done();
}
}
}
答案 0 :(得分:2)
我首先要检查服务器端上的文件类型,以防止出现任何问题。
然后使用 Dropzone 过滤文件类型,您可以使用:
accept的默认实现检查文件的mime类型或 针对此列表的扩展。这是一个以逗号分隔的mime列表 类型或文件扩展名。
例如:image / *,application / pdf,.psd
如果Dropzone可点击,此选项也将用作接受 隐藏文件输入的参数也是如此。
<强>示例:强>
var myDropzone = new Dropzone("div#myId", {
url: "/file/post",
acceptedFiles: 'application/x-msdownload,text/php'
});
将文件和完成函数作为参数获取的函数。
如果在没有参数的情况下调用done函数,则文件为 &#34;接受&#34;并将被处理。如果您传递错误消息,则 文件被拒绝,将显示错误消息。这 如果文件太大或不匹配,则不会调用函数 哑剧类型。
<强>示例:强>
Dropzone.options.myAwesomeDropzone = {
paramName: "file", // The name that will be used to transfer the file
maxFilesize: 2, // MB
accept: function(file, done) {
if (file.name == "justinbieber.jpg") {
done("This file is not accepted!");
}
else { done(); }
}
};