在 JQuery 文件上传演示中限制文件类型

Posted

技术标签:

【中文标题】在 JQuery 文件上传演示中限制文件类型【英文标题】:Restricting file types in JQuery File upload demo 【发布时间】:2012-08-31 11:37:54 【问题描述】:

我正在使用 JQuery file upload demo 进行下一个 Codeigniter 项目。谁能告诉我如何实现以下目标:

将上传文件类型限制为 .zip 和 .rar 限制文件大小 清除已上传文件列表(JQuery文件上传插件显示已上传文件列表)

帮助赞赏!!

【问题讨论】:

确保您也在服务器端执行所有这些限制/验证。 【参考方案1】:

你现在可能有很多解决方案,但是我想为 jquery 上传器使用 BASIC 插件,即没有任何其他脚本.. 由于某种原因 maxFileSize/fileTypes 选项不起作用 - 但这是毫无疑问的由于我缺乏阅读文档!

无论如何,对我来说,它就像执行以下操作一样快:

    add: function (e, data) 
        var goUpload = true;
        var uploadFile = data.files[0];
        if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test(uploadFile.name)) 
            common.notifyError('You must select an image file only');
            goUpload = false;
        
        if (uploadFile.size > 2000000)  // 2mb
            common.notifyError('Please upload a smaller image, max size is 2 MB');
            goUpload = false;
        
        if (goUpload == true) 
            data.submit();
        
    ,

因此,只需使用 ADD 选项仅允许正则表达式中的图像类型,并检查(在我的情况下)文件大小最大为 2mb。

相当基本,我再次确定 maxFileSize 选项有效,只是我只包括基本插件脚本 jquery.fileupload.js

编辑 我应该在我的情况下添加我只上传一个文件(个人资料图片),因此 data.files[0].. 你当然可以遍历文件集合。

【讨论】:

终于!我一直在寻找一个有效的例子。谢谢 :) add 按文件运行。因此data.submit 仅指一个文件。 如果我没有得到这个我不会更开心..:) 非常有帮助.. thz 太好了,我刚刚在 common.notifyError('You must select an image file only') 之前添加了 alert("You must select an image file only") 来通知用户【参考方案2】:

在 jquery.fileupload-ui.js 中编辑这部分:

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

    options: 
        // The maximum allowed file size:
        maxFileSize: 100000000,
        // The minimum allowed file size:
        minFileSize: undefined,
        // The regular expression for allowed file types, matches
        // against either file type or file name:
        acceptFileTypes:  /(zip)|(rar)$/i,
        ----------------------------------------------------------------

要清除已上传文件的列表 - 如果您不需要该功能,请从 main.js 中删除 $.getJSON 调用。

【讨论】:

【参考方案3】:

根据官方文档;

$('#file_upload').fileUploadUIX(
    maxFileSize: 5000000, // Maximum File Size in Bytes - 5 MB
    minFileSize: 100000, // Minimum File Size in Bytes - 100 KB
    acceptFileTypes: /(zip)|(rar)$/i  // Allowed File Types
);

【讨论】:

【参考方案4】:

另一种方法如下。

 $('#upload').fileupload( 
       change: function (e, data)  
                if (!(/\.(jpg|jpeg|png|pdf)$/i).test(data.files[0].name)) 
                    alert('Not Allowed');
                    return false;
                
         
 );

【讨论】:

【参考方案5】:

试着看看这一行:

 process: [
            /*
                
                    action: 'load',
                    fileTypes: /^image\/(gif|jpeg|png)$/,
                    maxFileSize: 20000000 // 20MB
                ,
                
                    action: 'resize',
                    maxWidth: 1920,
                    maxHeight: 1200,
                    minWidth: 800,
                    minHeight: 600
                ,

在 jquery.fileupload-fp.js 中

【讨论】:

以上是关于在 JQuery 文件上传演示中限制文件类型的主要内容,如果未能解决你的问题,请参考以下文章

如何限制用户通过 jquery 在 Telerik 上传中上传零大小的文件?

jQuery+ajax文件上传失败,啥原因

jquery文件上传插件——限制文件上传

使用 jQuery 作为中继上传到图像服务器

jQuery在使用ajax时对上传文件的大小有限制吗? [复制]

如何在 GCDWebUploader 中限制上传文件类型/格式