2014-09-28 46 views
7

在dropzone.js中,有一個事件error,但是我找不到任何關於如何從PHP中觸發的文檔。如何使用PHP在DropZone中觸發錯誤事件?

我曾嘗試從PHP發送各種包含404,500,503等的頭文件()響應,但此事件尚未解除。

我想要做的是服務器檢查MIME以查看它是否有效,如果無效,我放棄該文件,理想情況下返回一個錯誤,以便dropzone可以做出相應的響應。

從JavaScript方面,我曾嘗試以下:

.on("complete", function(file,response) { 
    console.log(response); 
} 

.on("error", function(file,response) { 
    console.log(response); 
} 

.on("success", function(file,response) { 
    console.log(response); 
} 

...然而,response是不確定的,即使我回JSON或純文本從PHP腳本。看起來dropzone.js不支持獲取完整的服務器響應,或者至少它不會將其提升到自定義處理程序。我所見過的任何關於在事件中傳遞第二個參數的地方都在這裏,在其他沒有直接提出這個問題的問題中。

必須有一種方法來獲得服務器響應(正如我以前使用其他上傳器JavaScript(例如jQuery POST和jqUpload等)所做的那樣)。看起來相當愚蠢的是,我無法觸發一個命令來指示上傳失敗 - 即使文件傳輸已完成 - 因爲它仍然需要等待腳本中的響應。 ---這意味着我很可能會忽略某些東西,這就是爲什麼我要求幫助,因爲他們的文檔沒有揭示服務器應該如何迴應 - 語言無關緊要,但是在我的情況下,我使用的是PHP。

在此先感謝。

回答

11
<?php 
header('HTTP/1.1 500 Internal Server Error'); 
header('Content-type: text/plain'); 
$msg = "Your error message here."; 
exit($msg); 
?> 

注:不重定向用戶否則它不會運行 「退出($味精)」

<script type="text/javascript"> 
      $(document).ready(function() { 

Dropzone.options.dropzone = { 

    maxFilesize: 10, 
    init: function() { 
     this.on("uploadprogress", function(file, progress) { 
     console.log("File progress", progress); 
     }); 
    } 

}; 
      }); 
     </script> 

完蛋了!它應該工作

1

如果您發送任何非200響應標題,Dropzone會將其檢測爲錯誤並觸發error(file, response)事件。該錯誤信息可以去爲JSON,並通過response.your_msg_variable

注意,只是打印response將不會顯示任何有用的東西,因爲它是一個對象,你可以使用console.log(JSON.stringify(responseText, null, 4));

這將打印這個對象最多4個級別進行訪問down