6

我想尝试创建一个 Javascript 应用程序,该应用程序从用户的表单中获取输入,然后根据用户的表单输入生成一个文件。

然后,用户应该可以在不接触服务器的情况下下载该文件。

您如何使用 JavaScript 在客户端创建文件,以及可以将其存储在客户端的何处,以便无需先在服务器上创建就可以下载它?

更新:更具体地说,正如格雷厄姆回答的那样,我正在寻找创建文件的方法,而不必触及文件系统本身,而只是创建一个可以由用户下载的文件对象(Blob)。谢谢格雷厄姆!

4

1 回答 1

17

在不必使用文件系统的情况下执行此操作的一种方法是创建 blob。假设我们有一堆数据(在您的情况下,来自表单),我们希望将其保存到文本“文件”中。我们实际上可以做如下事情:

var formBlob = new Blob([someStringVariable], { type: 'text/plain' });

从这里,我们可以链接用户以将其下载为实际文件,如下所示:

someLink.href = window.URL.createObjectURL(formBlob);

如果我们希望这些数据持久存在,我们可以将我们的 blob 序列化为 base64 字符串并将其保存到 localStorage 或任何其他持久类型的存储。将 blob 转换为 base64 有点超出此答案的范围,但您可以在此处找到一个很好的参考/库:http ://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/

于 2013-03-12T04:18:23.367 回答