Jan*_*old 5 html javascript drag-and-drop
我有一个 HTML5 文件上传对话/dropzone,它会给我这样的东西:
event.dataTransfer.files
Run Code Online (Sandbox Code Playgroud)
现在我看到为每个 File 对象设置了一些(强制性?)属性:
https://developer.mozilla.org/en-US/docs/Web/API/File
像file.name,file.lastModifiedDate等等。我可以通过这种方式获取值
event.dataTransfer.files.item(0).name
Run Code Online (Sandbox Code Playgroud)
但不要以这种方式检查该属性是否确实存在:
event.dataTransfer.files.item(0).hasOwnProperty('name')
Run Code Online (Sandbox Code Playgroud)
我了解到检查属性是否存在是一个很好的做法,hasOwnProperty()但这不适合这里。为什么呢?是因为 file.name 在某种程度上是“强制性的”吗?但是为什么值只是存储在原型链的某个地方?
小智 1
我没有解释为什么 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |