2015-03-13 34 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'); 
    }