2014-04-13 35 views
0

我想粘貼的數據的文件類型,而是一個錯誤是在控制檯拋出:JS - 拖放文件和獲取文件類型失敗

JSFiddle

錯誤:

Uncaught TypeError: Cannot read property 'type' of undefined 

JS:

var reader = new FileReader(); 

$(".paste").on('drop', function(e) { 

    e.stopPropagation(); 
    e.preventDefault(); 

    var file = e.target.files || (e.dataTransfer && e.dataTransfer.files); 

    var legalTypes = ["image/png", "image/jpeg", "image/gif"]; 

    if(legalTypes.indexOf(file.type) === -1) { 

     alert("Please only upload image files!"); 
     return false; 
    } 
+0

您沒有任何文件類型的輸入。 –

+0

這就是你想要實現的[JSFiddle](http://jsfiddle.net/sZjNq/4/) –

+0

@RahilWazir我不明白,我以爲文件輸入是粘貼的文件 – user1477955

回答

0

使用event.originalEvent獲取dataTransfer對象。

此外,文件對象將包含文件數組。所以你需要循環它們或使用第一個元素。

最終代碼將是:

$(document).ready(function() { 

    var reader = new FileReader(); 

$(".paste").on('drop', function(e) { 

    e.stopPropagation(); 
    e.preventDefault(); 

    var files = e.originalEvent.target.files || (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files); 

    var legalTypes = ["image/png", "image/jpeg", "image/gif"]; 

    for(i in files) { 

     if(legalTypes.indexOf(files[i].type) < 0) { 

      alert("Please only upload image files!"); 
      return false; 
     } 
    } 

    }); 

    }); 
+0

它不起作用小提琴,你試過了嗎? – user1477955