JS - 拖放文件并获取文件类型失败

时间:2014-04-13 17:00:02

标签: javascript jquery html

我想获取粘贴数据的文件类型,但是在控制台中抛出了错误:

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;
    }

1 个答案:

答案 0 :(得分:0)

使用event.originalEvent获取dataTransfer个对象。

此外,files对象将包含文件数组。所以你需要遍历它们或使用第一个元素。

最终代码为:

$(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;
        }
    }

    });

   });