javascript - HTML5 File 对象中的文件数据或位置在哪里?
问题描述
我正在创建一个组件来上传文件,例如:
<input onchange={handleFileUpload} />
function handleFileUpload(event) {
const file = event.target.files[0];
const reader = new FileReader();
reader.onload = ev => uploadMyFile(ev.target.result):
reader.readAsText(file);
}
event.target.files[0]
返回一个File
对象,该对象具有名称、类型和大小等基本信息。但是,在控制台中检查实例并阅读有关文件和 Blob 的 MDN 文档后,我不明白我file
的reader
.
具体来说,一个File
对象似乎不包含“文件路径”或“数据”属性;在我看来,它似乎只包括描述文件元信息的属性,而不包括它在本地文件系统中的位置,或某种形式的实际数据。
那么aFileReader
现在哪里可以找到要读取的文件呢?
解决方案
FileReader
File
对象不是用 JavaScript 编写的。它们通过 API 向 JavaScript 公开某些数据。
当FileReader
需要通过File
对象读取文件时,它通过不暴露给 JS 的 API(它们是可能用 C 编写的内部 API)来完成。
您无法在 JavaScript 级别访问该数据,因为它没有在此处公开(因为根本不需要它,或者因为网站能够访问该数据会带来安全风险)。
推荐阅读
- git - git checkout 注释标签行为
- c# - 单击共享的 OneNote 分区组链接时显示 OneDrive 目录列表
- docker - /usr/bin/ 是否被授权为 docker prefrences 中卷共享的默认位置?
- laravel - Laravel - 如何在 PHPUnit 测试中使用 faker?
- c++ - 超出列时,clang-format 强制每个参数/参数拥有自己的行?
- python - 使用 go-serial 从 arduino 的串口读取
- email - 从 Erlang 发送邮件 - OTP 应用程序或操作系统应用程序
- java - 查询C3P0开始获取的连接数
- firebase - 在 Firestore 中一次按数组项和其他字段查询
- android - Firestore 嵌套获取使用回调在初始调用时获取空结果