Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript blueimp文件上载插件中的maxFileSize和AcceptFileType不起作用。为什么?_Javascript_Jquery_File Upload_Blueimp_Jquery File Upload - Fatal编程技术网

Javascript blueimp文件上载插件中的maxFileSize和AcceptFileType不起作用。为什么?

Javascript blueimp文件上载插件中的maxFileSize和AcceptFileType不起作用。为什么?,javascript,jquery,file-upload,blueimp,jquery-file-upload,Javascript,Jquery,File Upload,Blueimp,Jquery File Upload,我正在使用Blueimp jQuery文件上传插件来上传文件 我上传时没有问题,但是maxFileSize和acceptFileTypes选项不起作用 这是我的代码: $(document).ready(function () { 'use strict'; $('#fileupload').fileupload({ dataType: 'json', autoUpload: false, acceptFileTypes: /(\

我正在使用Blueimp jQuery文件上传插件来上传文件

我上传时没有问题,但是
maxFileSize
acceptFileTypes
选项不起作用

这是我的代码:

$(document).ready(function () {
    'use strict';

    $('#fileupload').fileupload({
        dataType: 'json',
        autoUpload: false,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        maxFileSize: 5000000,
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p style="color: green;">' + file.name + '<i class="elusive-ok" style="padding-left:10px;"/> - Type: ' + file.type + ' - Size: ' + file.size + ' byte</p>')
                    .appendTo('#div_files');
            });
        },
        fail: function (e, data) {
            $.each(data.messages, function (index, error) {
                $('<p style="color: red;">Upload file error: ' + error + '<i class="elusive-remove" style="padding-left:10px;"/></p>')
                    .appendTo('#div_files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);

            $('#progress .bar').css('width', progress + '%');
        }
    });
});
$(文档).ready(函数(){
"严格使用",;
$('#fileupload')。fileupload({
数据类型:“json”,
自动上载:false,
acceptFileTypes:/(\.\/)(gif | jpe?g | png)$/i,
最大文件大小:5000000,
完成:功能(e,数据){
$.each(data.result.files,函数(索引,文件){
$(“

”+file.name+”-Type:“+file.Type+”-Size:“+file.Size+”字节

”) .appendTo(“#div_文件”); }); }, 失败:功能(e,数据){ $.each(data.messages、函数(索引、错误){ $(“

上载文件错误:“+error+”

”) .appendTo(“#div_文件”); }); }, progressall:功能(e、数据){ var progress=parseInt(data.loaded/data.total*100,10); $('#progress.bar').css('width',progress+'%'); } }); });
也有同样的问题,blueimp的家伙说“并提供了一个(断开的)链接来合并“验证”和“错误”方法

因此,在不知道如何合并这些方法而不弄乱脚本的情况下,我编写了这个小函数。这似乎对我有用

再加上这个

add: function(e, data) {
        var uploadErrors = [];
        var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
        if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
            uploadErrors.push('Not an accepted file type');
        }
        if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
            uploadErrors.push('Filesize is too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.submit();
        }
},
在.fileupload选项的开头,如您的代码所示

$(document).ready(function () {
    'use strict';

    $('#fileupload').fileupload({
        add: function(e, data) {
                var uploadErrors = [];
                var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
                if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
                    uploadErrors.push('Not an accepted file type');
                }
                if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
                    uploadErrors.push('Filesize is too big');
                }
                if(uploadErrors.length > 0) {
                    alert(uploadErrors.join("\n"));
                } else {
                    data.submit();
                }
        },
        dataType: 'json',
        autoUpload: false,
        // acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        // maxFileSize: 5000000,
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p style="color: green;">' + file.name + '<i class="elusive-ok" style="padding-left:10px;"/> - Type: ' + file.type + ' - Size: ' + file.size + ' byte</p>')
                .appendTo('#div_files');
            });
        },
        fail: function (e, data) {
            $.each(data.messages, function (index, error) {
                $('<p style="color: red;">Upload file error: ' + error + '<i class="elusive-remove" style="padding-left:10px;"/></p>')
                .appendTo('#div_files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);

            $('#progress .bar').css('width', progress + '%');
        }
    });
});
$(文档).ready(函数(){
"严格使用",;
$('#fileupload')。fileupload({
添加:功能(e、数据){
var uploadErrors=[];
var acceptFileTypes=/^image\/(gif | jpe?g | png)$/i;
if(data.originalFiles[0]['type'].length&!acceptFileTypes.test(data.originalFiles[0]['type'])){
uploadErrors.push('不是可接受的文件类型');
}
if(data.originalFiles[0]['size'].length&&data.originalFiles[0]['size']>5000000){
uploadErrors.push('文件大小太大');
}
如果(uploadErrors.length>0){
警报(上传错误。加入(“\n”);
}否则{
data.submit();
}
},
数据类型:“json”,
自动上载:false,
//acceptFileTypes:/(\.\/)(gif | jpe?g | png)$/i,
//最大文件大小:5000000,
完成:功能(e,数据){
$.each(data.result.files,函数(索引,文件){
$(“

”+file.name+”-Type:“+file.Type+”-Size:“+file.Size+”字节

”) .appendTo(“#div_文件”); }); }, 失败:功能(e,数据){ $.each(data.messages、函数(索引、错误){ $(“

上载文件错误:“+error+”

”) .appendTo(“#div_文件”); }); }, progressall:功能(e、数据){ var progress=parseInt(data.loaded/data.total*100,10); $('#progress.bar').css('width',progress+'%'); } }); });
您会注意到,我在其中还添加了一个filesize函数,因为这也只适用于UI版本

更新以解决@lopsided建议的问题:在查询中添加了
数据。原始文件[0]['type'].length
数据。原始文件[0]['size'].length
,以确保它们存在并且在测试错误之前不为空。如果它们不存在,则不会显示错误,它将仅依赖于服务器端错误测试。

打开名为“jquery.fileupload ui.js”的文件,您将看到如下代码:

 $.widget('blueimp.fileupload', $.blueimp.fileupload, {

    options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-download',
        。。。。
 options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        **acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,**
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-d
只需添加一行代码——新属性“acceptFileTypes”,如下所示:

 $.widget('blueimp.fileupload', $.blueimp.fileupload, {

    options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-download',
        。。。。
 options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        **acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,**
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-d
现在你会看到一切都好了~
您只是使用了错误位置的属性。

您还可以使用以下额外功能:

    function checkFileType(filename, typeRegEx) {
        if (filename.length < 4 || typeRegEx.length < 1) return false;
        var filenameParts = filename.split('.');
        if (filenameParts.length < 2) return false;
        var fileExtension = filenameParts[filenameParts.length - 1];
        return typeRegEx.test('.' + fileExtension);
    }
函数checkFileType(文件名,typeRegEx){
if(filename.length<4 | | typeRegEx.length<1)返回false;
var filenameParts=filename.split('.');
if(filenameParts.length<2)返回false;
var fileExtension=filenameParts[filenameParts.length-1];
返回typeRegEx.test('.'+fileExtension);
}

您应该包括并使其工作。

这在firefox中对我很有用

$('#fileupload').fileupload({

    dataType: 'json',
    //acceptFileTypes: /(\.|\/)(xml|pdf)$/i,
    //maxFileSize: 15000000,

    add: function (e, data) {
        var uploadErrors = [];

        var acceptFileTypes = /\/(pdf|xml)$/i;
        if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
            uploadErrors.push('File type not accepted');
        }

        console.log(data.originalFiles[0]['size']) ;
        if (data.originalFiles[0]['size'] > 5000000) {
            uploadErrors.push('Filesize too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.context = $('<p/>').text('Uploading...').appendTo(document.body);
            data.submit();
        }

    },
    done: function (e, data) {
        data.context.text('Success!.');
    }
});
$('#fileupload')。fileupload({
数据类型:“json”,
//acceptFileTypes:/(\.\/)(xml | pdf)$/i,
//最大文件大小:15000000,
添加:功能(e、数据){
var uploadErrors=[];
var acceptFileTypes=/\/(pdf | xml)$/i;
if(data.originalFiles[0]['type'].length&!acceptFileTypes.test(data.originalFiles[0]['type'])){
uploadErrors.push('文件类型不接受');
}
log(data.originalFiles[0]['size']);
if(数据原始文件[0]['size']>5000000){
uploadErrors.push('文件大小太大');
}
如果(uploadErrors.length>0){
警报(上传错误。加入(“\n”);
}否则{
data.context=$(“

”).text('Uploading…).appendTo(document.body); data.submit(); } }, 完成:功能(e,数据){ data.context.text('Success!'); } });


选中/有效示例:

  • 多文件输入
  • 对于一个或多个文件上载-
    $.grep()
    从数组中删除有错误的文件
  • 图像
    音频
    格式
  • 通过
    new RegExp()
注意:
acceptFileTypes.test()
-检查mime类型,对于像
.mp3
这样的adio文件,它将是
音频/mpeg
-而不仅仅是扩展名。对于所有blueimp选项:

$('input[typ]
    /**
     * Handles Add event
     */
    base.eventAdd = function(e, data) {

        var errs = [];
        var acceptFileTypes = /(\.|\/)(gif|jpe?g|png)$/i;
        var maxFileSize = 5000000;

        // Validate file
        $.each(data.files, function(index, file) {
            if (file.type.length && !acceptFileTypes.test(file.type)) {
                errs.push('Selected file "' + file.name + '" is not alloawed. Invalid file type.');
            }
            if (this['size'] > maxFileSize) {
                errs.push('Selected file "' + file.name + '" is too big, ' + parseInt(file.size / 1024 / 1024) + 'M.. File should be smaller than ' + parseInt(maxFileSize / 1024 / 1024) + 'M.');
            }
        });

        // Output errors or submit data
        if (errs.length > 0) {
            alert('An error occured. ' + errs.join(" "));
        } else {
            data.submit();
        }
    };
     add: function(e, data) {
        var uploadErrors = [];
        var ext = data.originalFiles[0].name.split('.').pop().toLowerCase();
        if($.inArray(ext, ['odt','docx']) == -1) {
            uploadErrors.push('Not an accepted file type');
        }
        if(data.originalFiles[0].size > (2*1024*1024)) {//2 MB
            uploadErrors.push('Filesize is too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.submit();
        }
    },
.fileupload({
    add: function (e, data) { 
        var attachmentValue = 3 * 1000 * 1024;
        var totalNoOfFiles = data.originalFiles.length;
        for (i = 0; i < data.originalFiles.length; i++) {
            if (data.originalFiles[i]['size'] > attachmentValue) {
                $attachmentsList.find('.uploading').remove();
                $attachmentMessage.append("<li>" + 'Uploaded bytes exceeded the file size' + "</li>");
                $attachmentMessage.show().fadeOut(10000, function () {
                    $attachmentMessage.html('');
                });
                data.originalFiles.splice(i, 1);
            }
        }
        if (data.files[0]) {
            $attachmentsList
           .prepend('<li class="uploading" class="clearfix loading-content">' + data.files[0].name + '</li>');
        }
        data.submit();                    
    }
$('#whatever').fileupload({
...
add: function(e, data) {
   var $this = $(this);
   data.process(function() {
      return $this.fileupload('process', data);
   }).done(function(){
      //do success stuff
      data.submit(); <-- fire off the upload to the server
   }).fail(function() {
      alert(data.files[0].error);
   });
}
...
});
$(this).fileupload({
    // ...
    processfail: function (e, data) {
        data.files.forEach(function(file){
            if (file.error) {
                self.$errorMessage.html(file.error);
                return false;
            }
        });
    },
//...
}
add : function (e,data){
   var extension = data.originalFiles[0].name.substr( 
   (data.originalFiles[0].name.lastIndexOf('.') +1) );
            switch(extension){
                case 'csv':
                case 'xls':
                case 'xlsx':
                    data.url = <Your URL>; 
                    data.submit();
                break;
                default:
                    alert("File type not accepted");
                break;
            }
  }
add: function(e, data) {
        data.url = 'xx/';
        var uploadErrors = [];
         var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
        console.log(data.originalFiles);
        for (var i = 0; i < data.originalFiles.length; i++) {
            if(data.originalFiles[i]['type'].length && !acceptFileTypes.test(data.originalFiles[i]['type'])) {
                    uploadErrors.push('Not an accepted file type');
                    data.originalFiles
                }
                if(data.originalFiles[i]['size'].length && data.originalFiles[i]['size'] > 5000000) {
                    uploadErrors.push('Filesize is too big');
                }
                if(uploadErrors.length > 0) {

                      alert(uploadErrors.join("\n"));
                }
        }
        data.submit();
      },
3g2|3gp|3gp2|3gpp|aac|aaf|aca|accdb|accde|accdt|acx|adt|adts|afm|ai|aif|aifc|aiff|appcache|application|art|asd|asf|asi|asm|asr|asx|atom|au|avi|axs|bas|bcpio|bin|bmp|c|cab|calx|cat|cdf|chm|class|clp|cmx|cnf|cod|cpio|cpp|crd|crl|crt|csh|css|csv|cur|dcr|deploy|der|dib|dir|disco|dll|dllconfig|dlm|doc|docm|docx|dot|dotm|dotx|dsp|dtd|dvi|dvr-ms|dwf|dwp|dxr|eml|emz|eot|eps|esd|etx|evy|exe|execonfig|fdf|fif|fla|flr|flv|gif|gtar|gz|h|hdf|hdml|hhc|hhk|hhp|hlp|hqx|hta|htc|htm|html|htt|hxt|ico|ics|ief|iii|inf|ins|isp|IVF|jar|java|jck|jcz|jfif|jpb|jpe|jpeg|jpg|js|json|jsonld|jsx|latex|less|lit|lpk|lsf|lsx|lzh|m13|m14|m1v|m2ts|m3u|m4a|m4v|man|manifest|map|mdb|mdp|me|mht|mhtml|mid|midi|mix|mmf|mno|mny|mov|movie|mp2|mp3|mp4|mp4v|mpa|mpe|mpeg|mpg|mpp|mpv2|ms|msi|mso|mvb|mvc|nc|nsc|nws|ocx|oda|odc|ods|oga|ogg|ogv|one|onea|onepkg|onetmp|onetoc|onetoc2|osdx|otf|p10|p12|p7b|p7c|p7m|p7r|p7s|pbm|pcx|pcz|pdf|pfb|pfm|pfx|pgm|pko|pma|pmc|pml|pmr|pmw|png|pnm|pnz|pot|potm|potx|ppam|ppm|pps|ppsm|ppsx|ppt|pptm|pptx|prf|prm|prx|ps|psd|psm|psp|pub|qt|qtl|qxd|ra|ram|rar|ras|rf|rgb|rm|rmi|roff|rpm|rtf|rtx|scd|sct|sea|setpay|setreg|sgml|sh|shar|sit|sldm|sldx|smd|smi|smx|smz|snd|snp|spc|spl|spx|src|ssm|sst|stl|sv4cpio|sv4crc|svg|svgz|swf|t|tar|tcl|tex|texi|texinfo|tgz|thmx|thn|tif|tiff|toc|tr|trm|ts|tsv|ttf|tts|txt|u32|uls|ustar|vbs|vcf|vcs|vdx|vml|vsd|vss|vst|vsto|vsw|vsx|vtx|wav|wax|wbmp|wcm|wdb|webm|wks|wm|wma|wmd|wmf|wml|wmlc|wmls|wmlsc|wmp|wmv|wmx|wmz|woff|woff2|wps|wri|wrl|wrz|wsdl|wtv|wvx|x|xaf|xaml|xap|xbap|xbm|xdr|xht|xhtml|xla|xlam|xlc|xlm|xls|xlsb|xlsm|xlsx|xlt|xltm|xltx|xlw|xml|xof|xpm|xps|xsd|xsf|xsl|xslt|xsn|xtp|xwd|z|zip