Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文件API,指向本地文件的持久链接_Javascript_Html - Fatal编程技术网

Javascript 文件API,指向本地文件的持久链接

Javascript 文件API,指向本地文件的持久链接,javascript,html,Javascript,Html,我目前正在基于一个游戏编写一些web脚本(将游戏移植到web)。 脚本从我的web主机下载数据,因此加载速度较慢(必须下载每个文件:地图、模型、纹理等)。 为了纠正这一点,我添加了一个选项,允许用户在他们的计算机中选择他们的本地游戏数据(使用文件API-拖放),直接从本地解析内容,避免从web下载多个megas,结果非常快 问题是:每次重新加载浏览器时,他们都必须一次又一次地重新选择文件。它不是用户友好的 那么,有没有一种方法可以保存这个游戏存档中的引用,以避免用户每次都重新进行拖放?我知道安全

我目前正在基于一个游戏编写一些web脚本(将游戏移植到web)。 脚本从我的web主机下载数据,因此加载速度较慢(必须下载每个文件:地图、模型、纹理等)。 为了纠正这一点,我添加了一个选项,允许用户在他们的计算机中选择他们的本地游戏数据(使用文件API-拖放),直接从本地解析内容,避免从web下载多个megas,结果非常快

问题是:每次重新加载浏览器时,他们都必须一次又一次地重新选择文件。它不是用户友好的

那么,有没有一种方法可以保存这个游戏存档中的引用,以避免用户每次都重新进行拖放?我知道安全问题,只是想知道是否存在类似持久URL的内容。createObjectURL()

注意:游戏数据约为2Go,因此不可能将其存储在文件系统API中(我不想复制它,如果只保留对它的引用,复制数据会浪费空间)

谢谢:)

您必须获得用户的输入 在用户未确认的情况下,无法访问客户端计算机上的文件。一旦用户选择了一个文件(您可以使用
change
事件收听该文件),您就可以使用例如来读取该文件

document.getElementById(“输入”).addEventListener(“更改”,函数(){
const fs=new FileReader();
fs.readAsText(this.files[0]);
fs.onloadend=函数(){
document.getElementById(“输出”).innerText=fs.result;
}
});


< /代码> 您可能想考虑使用。最近的浏览器包括Chrome、Firefox和Safari(macOS和iOS)都支持它。IndexedDB允许您将
Blob
文件
ArrayBuffer
保存为IndexedDB对象存储中的值


检查此项。

我也希望得到答案……我打赌您可以使用类似Flash的插件。@qxz-thx但在我的情况下,Flash不是一个解决方案。我想可能会回答您的问题。我已经在使用indexedDB,但我正在寻找一个不涉及复制文件的解决方案。您的文件密钥是什么?文件名可从拖放API和文件API获得。也许您可以为文件名编制索引,并将这些文件名与HTML页面或API中的列表进行比较?Flash或桌面应用程序对我来说都不是可行的解决方案。我已经使用混合应用程序使用electron实现了这一点,但我希望在只使用浏览器的应用程序中实现同样的行为。然后答案似乎很明显:“不可能……”。我想你的答案对其他读者可能有用