因 Unicode IDE 编辑器导入文件、文件夹需要,研究了下导入文件/文件夹的功能实现,发现现在相干文章有点少,故而记录下过程,如果有误,还望指正。(API的兼容性及相干属性、接口界说,请自行查看文件体系 API)
文件 API
文件 API 使得 web 应用可以访问文件和其中的内容,当我们想要访问一个文件,可以通过[](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input/file “”)大概拖放来实现。以这种方式提供的文件集被表示为FileList对象,这使得 web 应用能够检索单个File对象。
const input = document.createElement("input");
input.type = "file";
input.multiple = true;
input.addEventListener("change", () => {
// 当然,此处也可以使用事件源 e 来获取 FileList 对象哈,e.target 指向 input
// 当然,此处也可以使用事件源 e 来获取 FileList 对象哈,e.target 指向 input
const fileList = input.files;
// 以第一个 File 对象为例,获取 Blob
const file = fileList![0];
const fileReader = new FileReader();
fileReader.onload = () => {
console.log(fileReader.result);
};
fileReader.readAsText(file);
});
复制代码
Tips:关于上诉 FileReader、Blob、File等常见数据类型的界说、转换不在本篇的讨论范围哈,网上也有很具体的说明,各人搜索一下就可以了,我推荐两篇文章,各人可以看看~
谈谈JS二进制:File、Blob、FileReader、ArrayBuffer、Base64[这里是图片006]https://juejin.cn/post/7148254347401363463?searchId=20241113152541CCE5E6FEB74927A4CFEBjs二进制及其相干转换全总结(File、Blob、FileReader、ArrayBuffer、Base64、Object URL、DataURL…)[这里是图片007]https://juejin.cn/post/7395866692798201871?searchId=20241113152055D9FE2B4CE63230A35055
文件体系 API
用户直接操作体系文件黑白常危险的行为,因此,此API要求在安全上下文可用。
File System API 答应步伐与用户本地装备上的或是用户能够访问的网络文件体系上的文件举行交互。此 API 的焦点功能包括读取文件、写入或保存文件以及访问目录结构。大多数与文件和目录的交互都通过句柄来完成:
句柄是指在Web API中用于操作文件体系的接口或对象。
通过这些句柄,Web应用可以实现对本地文件体系的读取、写入、导航等操作。
File System API答应Web应用在用户的装备上创建、读取、导航用户本地文件体系中的沙盒部分,并向其中写入数据。