通过hasOwnProperty获取文件属性

时间:2014-11-26 10:13:17

标签: javascript html5 drag-and-drop

我有一个HTML5文件上传对话框/ dropzone,它会给我这样的东西:

event.dataTransfer.files

现在我看到为每个File对象设置了一些(强制?)属性:

https://developer.mozilla.org/en-US/docs/Web/API/File

file.namefile.lastModifiedDate等相似。我可以通过这种方式获得价值

event.dataTransfer.files.item(0).name

但不检查属性是否实际存在:

event.dataTransfer.files.item(0).hasOwnProperty('name')

我了解到使用hasOwnProperty()检查存在的属性是一个好习惯,但这不适用于此。为什么会这样?是因为file.name是某种方式"强制性"?但为什么价值只是存储在原型链的某个地方?

1 个答案:

答案 0 :(得分:0)

我没有解释为什么 hasOwnProperty 不起作用,但我创建了以下函数,该函数可以接收 event.dataTransfer.files.item(0) 作为输入并返回一个具有所有可用属性的对象:

function extractFileMetadada(file) {
    var r = {};
    var a = ['lastModified','lastModifiedDate','name','size','type','fileName','fileSize','webkitRelativePath'];

    for (var i=0; i<a.length; i++) {
        if (typeof file[a[i]] !== 'undefined')
            r[a[i]] = file[a[i]];
    }

    return r;
}