maxNumberOfFiles选项在jquery文件上传器中不起作用

时间:2014-04-27 10:35:48

标签: jquery jquery-file-upload

我似乎无法限制可以上传的文件数量。 https://github.com/blueimp/jQuery-File-Upload/wiki/Options

我使用拖放方法和搜索浏览器的方法。 在wiki中,我读到有必要使用“maxNumberOfFiles”选项并删除“multiple”属性但它没有改变,总是可以删除多个文件。 除了代码,我找不到关于“maxNumberOfFiles”选项的信息。

脚本

var dropZonebox = $('#dropzone');
$('#fileupload').fileupload({
    url: fund_upload_url,
    dataType: 'json',   
    dropZone: dropZonebox,
    maxNumberOfFiles: 1
});

4 个答案:

答案 0 :(得分:4)

我有同样的问题,最后还是这样:

singleFileUploads设置为false:这样可以确保如果用户删除3个文件,则不会使用一个文件调用3次,而是使用3个文件调用1次。

然后您可以自己处理add参数中的文件数。

如果删除了多个文件(dropzone中闪烁的红色背景),我这样做会产生一些影响:

$('.fileToUpload').each(function () { // Multiple input file
    $(this).fileupload({
        url: '...',
        dataType: 'json',
        dropZone: $(this),
        singleFileUploads: false,
        add: function (e, data) {
            var targetName = data.paramName;
            $('#'+targetName+'Dropzone').removeClass('hover');
            if (data.files.length > 1) {
                $('#'+targetName+'Dropzone').addClass('dropzone-error');
                setTimeout("$('#"+targetName+"Dropzone').removeClass('dropzone-error')",300);
                return;
            }
            var jqXHR = data.submit(); // Catching the upload process of every file
            $('#'+targetName+'Cancel').on('click',function(e){
                  jqXHR.abort();
            });
        },
        ...

答案 1 :(得分:1)

我遵循了Irvin Dominin的说法,但即使我插入jquery.fileupload-ui.js,我仍然无法工作。

调试后我发现getNumberOfFiles由于这两个文件的顺序而无效。 jquery.fileupload-validate.jsjquery.fileupload-ui.js

jquery.fileupload-ui.js解决我的案件之后立即放置jquery.fileupload-validate.js文件。

希望它对那些遇到同样问题的人有用。

答案 2 :(得分:0)

我认为问题出在getNumberOfFiles实施中:

  

maxNumberOfFiles选项取决于getNumberOfFiles选项,   这是由UI和AngularJS实现定义的。   https://github.com/blueimp/jQuery-File-Upload/wiki/Options#maxnumberoffiles

如果您没有使用UI或AngularJS版本,则必须将getNumberOfFiles实现为返回当前文件数的函数,例如:https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload-ui.js#L73

答案 3 :(得分:-1)

我发现使用了一个适合我的简单计数器

select d.*, fv.*,
       datediff(day, d.DischargeDt, ov.FollowupVisitDt) as DaysBetween
from Discharges d outer apply
     (select top 1 ov.*
      from [MH].[dbo].OutpatientVisits ov
      where ov.ClientId = d.ClientId and
            ov.FollowupVisitDt > d.DischargeDt
      order by FollowupVisitDt
     ) fv;