从 JavaScript 字符串保存文件而不访问服务器

2024-05-05

如果我在 JavaScript 中有一个内存字符串(例如 Excel 或 PDF 格式),并且我想弹出一个保存对话框以便用户可以将这些字节保存到文件中,我将如何执行此操作?我试图避免回到服务器。如果我要返回服务器,我可以在响应中发送正确的 HTTP 标头,告诉浏览器我正在发送文件。但我想从 JavaScript 中执行此操作,因为我已经在客户端上拥有了所需的字节。

这可能吗?

Edit:
我应该澄清我实际上在这里寻找什么。我正在使用 Silverlight 应用程序。在 Silverlight 中,我可以弹出一个保存对话框并保存字节(在本例中,假设它们是 Excel 字节)。这似乎是人们在下面建议使用 Flash 时所建议的。 Silverlight 提供相同的功能。

但是,我更希望 Excel 文件在新的浏览器窗口中打开。如果我在服务器上生成文件,我可以很容易地做到这一点,因为我可以发送正确的标头。但我已经在客户端上有了 Silverlight 中的字节。有什么方法可以在新的浏览器窗口中打开该文档,以便用户只需单击“打开”按钮,而无需选择保存位置并导航到该文件?

而且我无法使用浏览器外应用程序选项。我知道可以通过 COM 互操作与 Excel 进行交互来使用它。但在这种情况下这是不行的。

但我可以通过 Silverlight 与 JavaScript 进行互操作。因此,我希望能够以某种方式使用 JavaScript 来打开浏览器窗口并将 Excel 字节流式传输到其中。


您可以使用数据 URI https://developer.mozilla.org/en/data_URIs将文件嵌入到 HTML 文档中;例如。,http://jsfiddle.net/dqWae/ http://jsfiddle.net/dqWae/创建一个启动维基百科标题图像下载的链接。 (MIME 类型硬编码为application/octet-stream但您当然可以将其指定为 PDF 或 XLS)。

您需要将文件的字节编码为base 64 https://secure.wikimedia.org/wikipedia/en/wiki/Base64并为资源创建数据 URI。然后,创建一个新的锚元素,其href属性是数据 URI。如果您想自动启动下载,以编程方式发出点击事件 https://stackoverflow.com/questions/1421584/how-can-i-simulate-a-click-to-an-anchor-tag到锚元素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 JavaScript 字符串保存文件而不访问服务器 的相关文章

随机推荐