0

我正在编写一个 Web 应用程序,它允许用户选择一个PNG文件,向其中写入一个iTXt块,然后将其保存回他们的本地文件系统。我会使用新的FileWriterAPI 来执行此操作,但目前只有 Google Chrome 添加了对它的支持。

由于我的文件在内存中表示为二进制字符串,因此我使用数据 URI 提示用户保存文件,如下所示:

window.location.href = "data:application/octet-stream;base64," + btoa(blob);

由于 mime-type 是application/octet-stream浏览器提示用户打开或保存它。但是问题是用户不知道它是哪种类型的文件。所以用户必须手动添加文件扩展名。

目前我提醒用户文件需要保存的扩展名。然而,这似乎是一个不雅的解决方案。有没有更好的方法来达到相同的结果?

4

1 回答 1

1

如果这是 HTTP,那么您要么必须将内容处置设置为附件,即使文件的 mime 类型已知,也要保存文件,或者为八位字节流类型的附件设置文件名。data:但是,这些标头都不能使用URI来模拟,所以我看不到使用这样的 URI 打开“另存为...”对话框的方法。

其他人询问如何为 js 变量打开保存文件对话框,从那里的答案来看,似乎有现成的解决方案,只要客户端安装了 Flash(并且没有被阻止)就可以使用。

因此,也许您可​​以尝试多种解决方案,从您提到的开始,如果不可用,则尝试基于闪存的方法,然后使用有关文件扩展名的警报消息FileWriter回退到URI。data:这样,您可能会为每个客户实现最佳结果。

于 2012-07-24T14:06:05.627 回答