通过hasOwnProperty获取文件属性

Get file property via hasOwnProperty

本文关键字:取文件属性 hasOwnProperty 通过      更新时间:2023-09-26

我有一个HTML5文件上传对话框/放置区,它会给我这样的内容:

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 在某种程度上是"强制性的"吗?但是,为什么该值只是存储在原型链中的某个位置?

我没有解释为什么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;
}