javascript - 访问 File 对象的某些列出的属性时返回 "undefined"

标签 javascript jquery dropzone.js fileapi

我似乎无法访问我的对象的宽度或高度键。

我正在使用 dropzone.js,它有一个 addedFile 事件,它返回文件和第一个参数。

所以:

var myDropzone = new Dropzone('#dropzone', {url: '/'});

myDropzone.on('addedFile', function(file) {
    console.log(file);
});

回调工作正常,在我的控制台中我看到: enter image description here

如您所见,显然可以使用高度和宽度键。

myDropzone.on('addedFile', function(file) {
    console.log(file.name); // returns the whole strong
    console.log(file.width); // returns undefined
    console.log(file['width']);  // returns undefined
});

截图如下:

enter image description here

我的问题是,为什么名称可用,但宽度或高度不可用?是因为它们是只读的还是什么?如果是这样,是否有可能访问它?

最佳答案

File.width 属性是 DropzoneJS 扩展,不是核心的一部分 File API ;它是稍后添加的

Dropzone adds data to the file object you can use when events fire. You can access file.width and file.height if it's an image..

如果适用 "thumbnail" 事件发生时,图像大小信息可用。 保证在此事件之前设置。

文档对此不是很清楚,只是暗示“缩略图生成时”,但这就是 behavior of the source (请参阅 createThumbnail/resize 函数)- 在生成缩略图时 收集图像大小。


可以看到初始行为是因为 console.log(在浏览器中,例如 Chrome,将其视为类似于 console.dir)显示“实时”对象。这反过来又为异步 缩略图生成和关联的图像尺寸收集提供了足够的时间,以便在浏览器在控制台中显示对象现在分配的属性之前完成。 (这也解释了为什么使用超时来读取属性值有效 - 尽管这不是可靠的方法。)

另一方面,直接访问 file.width 会强制立即评估 still-not-set 属性,这会导致 中的 undefined” addedFile" 回调。

关于javascript - 访问 File 对象的某些列出的属性时返回 "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927381/

相关文章:

javascript - Jquery 自动完成建议 - 小字体列表

javascript - 如何最好地触发文件删除事件?

javascript - 如何启用 Dropzone 选项? autoDiscover 破坏了 Dropzone 功能。

javascript - d3 我希望隐藏网格线溢出

php - 如何将数据从 jQuery 传递到 php 以保存到数据库中?

javascript - 在 Qualtrics 中使用 javascript 将可拖动条设置为自定义开始位置

javascript - 能够在使用 keyup 事件时用键盘移动光标

drupal-7 - 如何在 Drupal 中处理通过 Dropzone 上传的文件?

javascript - 如何选择所有父复选框?

javascript - 如何使用reduce()从javascript中的嵌套数据中提取信息? (ES6)