2015-03-13 92 views
0

我正在使用jquery文件上传如下。使用jquery文件上传验证文件?

dialogElem.find('#upload-image-file-input').fileupload({ 
      url: url, 
      dataType: 'json', 
      autoUpload: true, 
      acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 
      maxFileSize: 5000000, // 5 MB 
      // Enable image resizing, except for Android and Opera, 
      // which actually support image resizing, but fail to 
      // send Blob objects via XHR requests: 
      disableImageResize: /Android(?!.*Chrome)|Opera/ 
       .test(window.navigator.userAgent), 
      previewMaxWidth: 100, 
      previewMaxHeight: 100, 
      previewCrop: true 
     }).on('fileuploadadd', function (e, data) { 
      var fileCount = data.originalFiles.length; 
      if (fileCount > 5) { 
       alert("The max number of files is : "+5); 
       return false; 
      } 
      }).on('fileuploadprocessalways', function (e, data) { 
       //some logic 
      }).on('fileuploadprogress', function (e, data) { 
       //some logic 
      }).on('fileuploaddone', function (e, data) { 
       //some logic 
      }).on('fileuploadfail', function (e, data) { 
       //some logic 
      }) 

Inside fileuploadadd我添加了一些验证逻辑。如果验证失败,我如何停止所有其他事件,如fileuploadprogress,fileuploadfailfileuploadprocessalways

回答

0

如果妳有一些任务就像我几周前曾 - 试试这个:

您可以通过中止XHR(Ajax请求)调用取消正在进行的上传。 您可以绑定到文件输入字段的fileuploadadd情况下,提交申请,同时保持jqXHR对象,并用它来中止:

jqXHR.abort(); 

例如:

$(".cloudinary-fileupload").bind('fileuploadadd', function(e, data) { 
    jqXHR = data.submit(); // Catching the upload process of every file 
}); 

$('#cancel_button').click(function (e) { 
    if (jqXHR) { 
     jqXHR.abort(); 
     jqXHR = null; 
     console.log("Canceled"); 
    } 
    return false; 
}); 

以下页面包含了一些更多的代码样本 https://github.com/blueimp/jQuery-File-Upload/issues/290

就叫

if (fileCount > 5) { 
jqXHR.abort(); 
jqXHR = null; } 
+0

难道ü尝试?有用?我有一个不同的图片上传,不确定。 – Legendary 2015-03-13 12:36:19

+0

我会尽力让你知道..谢谢你的回答。 – user755806 2015-03-13 12:37:16

0

jqXHR.abort()不适合我。但中止 “添加” 处理:

.bind('fileuploadadd', function (e, data) { 
    if (total_uploads >= maxImagesPerPost){ 
     throw new Error('Upload maximum reached'); 
    }