2014-05-24 103 views
5

我需要檢查一個文件是否有一個有效的MIME類型,如果文件的大小是好的,如果它的尺寸是好的,然後上傳文件。如何在DropzoneJS中顯示自定義錯誤消息?

所以,當一切都OK,我可以使用:

complete: function(file){ 
    // do something here. 
} 

但如果文件的大小是無效的?在我的PHP腳本我返回一條錯誤消息:

return json_encode(['error' => 'size is invalid']); 

OR

return Response::json(['error' => 'size is invalid'], 500 ]; 
// this is Laravel 4 syntax. returns a json array and 500 as status code. 

但如何處理,在DropzoneJS error

我試着給complete()函數添加第二個參數,但它不起作用。

complete: function(file, response){ 
    console.log(response); // this does not work. 
} 

回答

7

獲得響應的文件是在DropzoneJS提交給服務器使用此之後:

success: function(file, response) { 
    alert(response); 
} 

並上傳它使用此之前驗證文件:

complete: function(file) { 
    if (file.size > 3.5*1024*1024) { 
    alert("File was Larger than 3.5Mb!"); 
    return false; 
    } 

    if(!file.type.match('image.*')) { 
    alert("Upload Image Only!"); 
    return false; 
    } 
} 

如果您服務器正在返回responseJSON,您需要在alert之前使用JSON.parse

希望它能幫助你!乾杯! :)

+2

我想補充的東西,我認爲是非常有用的:你要聽事件(http://www.dropzonejs.com/#toc_8)不重寫它(HTTPS:/ /github.com/enyo/dropzone/issues/297)。乾杯! :) – amandasantanati

+0

@amandasantanati這真的很好,它可以讓你添加更多的功能。鏈接爲+1。 –

1

只是爲了簡化什麼@amandasantanati這麼說你不按一下週圍:

不要做complete: ...而是:

init: function() 
    { 
     this.on("complete", function(file) { 
      if (file.size > 3.5*1024*1024) { 
       this.removeFile(file); 
       alert('file too big'); 
       return false; 
      } 

      if(!file.type.match('image.*')) { 
       this.removeFile(file); 
       alert('Not an image') 
       return false; 
      } 
     }); 
    }, 
1

設置HTTP響應代碼 http_response_code(415) ; //不支持的媒體類型 或http_response_code(415); //不接受

function showError($message) 
    { 
     http_response_code(415); 
     die($message); 
    } 

enter image description here

相關問題