我正在使用Jquery文件上传扩展(https://github.com/blueimp/jQuery-File-Upload/)在我的网站上做上传系统。
问题是,我不想让用户通过拖放区上传多个文件,有没有办法限制它,只允许单个文件上传?我发现按钮只有这样的限制,在wiki中没有关于单拖放上载的信息。
发布于 2014-05-21 16:41:23
查看他们的文档,答案就在那里:
请注意,用户仍然可以拖放多个文件。要强制执行一个文件上载限制,您可以使用maxNumberOfFiles选项(请参见Options)。
发布于 2014-05-21 16:42:35
您需要将jquery.fileupload.validate.js添加到您的站点。然后,将考虑maxNumberOfFiles属性。
您可以将其设置为1。
$('.something').fileupload({
dropZone : $('.your-dropzone'),
url : 'http://...',
dataType : 'json',
maxNumberOfFiles : 1
});发布于 2017-08-05 08:04:41
复活这个问题是因为我找到了解决这个问题的办法,我需要自己去做……
正如DazVolt指出的那样,jquery.fileupload-ui.js中的maxNumberOfFiles值适用于会话中上传的所有文件,而不仅仅是特定的上传,因为jquery.fileupload-ui.js中的这个函数基本上计算UI中已处理(即已经上传)的表行的数量,然后将其与maxNumberOfFiles进行比较:
getNumberOfFiles: function () {
return this.filesContainer.children()
.not('.processing').length;
},不过令人高兴的是,getNumberOfFiles的这个定义是可以改变的。
为了让它在每次上传时都能工作,也就是说,每次上传只能有一个文件,但上传的次数和你喜欢的一样多,我这样做了:
{% for (var i=0, file; file=o.files[i]; i++) { %} <tr class="template-download fade previouslyUploaded">
var perUploadRestriction = max_file_upload () { // previouslyUploaded是在template-download //中添加的一个类,这里的查询表示之前上传的文件不计入max_file_upload限制//只计算当前上传准备中的文件返回{
$(this).fileupload({ dropZone:$(this),processQueue:{dropZone:'validate',//acceptFileTypes:*您文件类型的正则表达式对象*,maxFileSize: 5000000,maxNumberOfFiles: 1,},getNumberOfFiles: perUploadRestriction,});
现在,如果我拖放多个文件到dropzone,我会收到一条错误消息,但在成功上传之后,我仍然可以在相同的限制下进行更多的上传。
这是一个小技巧,但对我来说是可行的
https://stackoverflow.com/questions/23778084
复制相似问题