使用 HTML5 FileSystem API 将文件写入桌面

IT技术 javascript html fileapi
2021-03-11 19:45:35

我正在玩弄FileSystem API

我发现了很多示例,您可以在其中生成下载链接并让用户以“浏览器方式”下载文件。

我想知道两件事:

  1. 有没有办法将小提琴中的ajax结果作为文件直接写入磁盘(没有任何类型的提示)。以用户的桌面为例。

  2. blob 是最合适的格式吗?

http://jsfiddle.net/FBGDe/

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200){
        console.log(this.response, typeof this.response);
        var img = document.getElementById('img');
        var url = window.URL = window.webkitURL;
        img.src = url.createObjectURL(this.response);
    }
}
xhr.open('GET', 'http://www.newyorker.com/online/blogs/photobooth
                                                       /NASAEarth-01.jpg');
xhr.responseType = 'blob';
xhr.send();      
2个回答

请注意,文件系统 API 不再是标准规范的一部分,具体如下:http : //www.w3.org/TR/file-system-api/

编辑:引用规范以防链接更改:“文件 API:目录和系统 W3C 工作组注释 2014 年 4 月 24 日

本文件的工作已停止,不应作为参考或用作实施的基础。

(这与问题没有直接关系,但必须知道不要进一步使用 FileSystem API。)

另一个链接:http : //www.html5rocks.com/en/tutorials/file/filesystem/

“2014 年 4 月,公共网络应用程序宣布文件系统 API 规范应该被视为已死。其他浏览器对实现它几乎没有兴趣。”

好的,以后我会添加详细信息,而不仅仅是链接。谢谢。
2021-05-04 19:45:35
Web SQL 数据库完全相同,但已被弃用。对于离线 Web 应用程序,我相信Indexed DBWeb 存储是剩下的选项。
2021-05-10 19:45:35

不幸的是,目前无法写入常规文件(尽管接受了使用 HTML5 和 JavaScript 修改本地文件的答案)。

您只能写入沙盒文件系统。

仅供参考,您可以在 Chrome Packaged App 中执行此操作:http : //developer.chrome.com/apps/fileSystem.html但即便如此,用户至少必须先选择文件。写入任何文件将是一个严重的安全漏洞。

你真正想解决什么问题?

@PaulDraper,这是一个老话题,但我想在这里解决的问题是一个基于 JavaScript 的应用程序,它需要在客户端创建虚拟 SQL 数据。比如说,一个包含 10000 个虚拟名称的 CSV 文件。为了避免用户通过 Internet 下载大文件,我试图通过 javascript 在客户端创建它。
2021-05-01 19:45:35
谢谢你,很抱歉评论晚了。我希望用户标记一堆文件 > 选择一个文件夹 > 按下载并让浏览器同时下载它们。但我想将它们压缩到服务器端并以常规方式下载会更容易。
2021-05-06 19:45:35
<A 下载> 怎么样?
2021-05-07 19:45:35
@Johan,您将不得不压缩。无论是新文件还是现有文件,同样的限制都适用。
2021-05-10 19:45:35
只是详细说明,我不想写入现有文件,我想创建一个新文件。但我想这就是你所指的?
2021-05-14 19:45:35