如果我在JavaScript中有一个内存字符串,可以说是Excel或PDF格式,并且我想弹出一个保存对话框,以便用户可以将这些字节保存到文件中,我该怎么做?我试图避免回到服务器。如果我要返回服务器,则可以在响应中发送正确的HTTP header ,以告诉浏览器我正在发送文件。但是我想用JavaScript代替,因为我已经在客户端上有了所需的字节。

这可能吗?

编辑:
我应该澄清一下我在这里实际寻找的内容。我正在使用Silverlight应用程序。在Silverlight中,我可以弹出一个保存对话框并保存字节(在这种情况下,假设它们是Excel字节)。这似乎是人们在建议使用Flash时的以下建议。 Silverlight提供了相同的功能。

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

而且我不能使用浏览器外应用程序选项。我知道可以通过COM-interop与Excel进行对话来使用它。但这在这种情况下是行不通的。

但是我可以与Silverlight中的JavaScript互操作。因此,我希望可以以某种方式使用JavaScript打开浏览器窗口并将Excel字节流式传输到该窗口。

最佳答案

您可以使用data URIs将文件嵌入HTML文档中。例如http://jsfiddle.net/dqWae/创建一个链接,该链接启动Wikipedia标题图片的下载。 (MIME类型被硬编码为application/octet-stream,但您当然可以将其指定为PDF或XLS)。

您将需要将文件的字节编码为base 64并为资源创建一个数据URI。然后,创建一个新的 anchor 元素,其href属性为数据URI。如果要自动启动下载,请将programmatically issue a click event anchor 定到 anchor 元素。

关于javascript - 从JavaScript字符串保存文件而无需访问服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5082404/

10-12 00:06
查看更多