【问题标题】:Downloading file from DataURL in JavaScript在 JavaScript 中从 DataURL 下载文件
【发布时间】:2012-02-06 05:39:09
【问题描述】:

从我们从 DataURL 获得的这个字符串中,将它下载为文件的最佳方式是什么?

到目前为止,我得到的是使用基本的window.open("myDataURL");,但我无法以这种方式更改文件名。

window.open('data:application/msword;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAA
             PgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAA
             AAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/',
             '_blank','height=300,width=400');

我想知道是否有任何方法可以正确处理这些数据。

【问题讨论】:

  • 之前看到过这个问题,文件名变成了“rVPjLUq1.part”,就好像我用的是我上面贴的例子一样。
  • 正如 Wladimir Palant 所写,问题一直是 discussed on the W3C mailing list,但“到目前为止,这似乎没有成为任何规范,更不用说浏览器实现了。”恐怕这件事没有任何进展。

标签: javascript filewriter data-url


【解决方案1】:

试试这个:

data:application/msword;fileName=test.doc;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAAAAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/

但这只是谷歌搜索的猜测,可能取决于浏览器。真正的答案是,你不能 - 请参阅 http://www.ietf.org/rfc/rfc2397 以获取参考,规范中没有任何内容支持文件名。

【讨论】:

  • 是的,它没有用。它仅用于图像使用吗?因为如果你不能重用这个“值”并用它重新创建一个文件,这并不是一个很大的优势。我仍在寻找解决此问题的答案……也使用 JSP 或 Java。但是我看不到有关如何以这种方式处理 dataURL 的链接。
  • 数据 URI 用于以与 URI 兼容的方式处理原始数据。例如,将图像或文本嵌入到另一个文档中,否则该文档需要外部链接元素。
  • 我明白了。在我们获取文件内容的方法中,我们使用我们的 reader.readAsDataURL(file);...如果我使用它 readAsBinaryString,我是否能够在之后正确地重新创建我的文件(pdf、xls、docs)?跨度>
  • fileName 参数被忽略。文件保存为[random string].part
【解决方案2】:

您可以向锚元素添加 download 属性。 示例:

<a download="abcd.zip" href="data:application/stream;base64,MIIDhTCCAvKg........">download</a>

【讨论】:

  • IE不支持
  • 它也没有解决 OP 为 window.open 属性指定文件名的问题(来自 Javascript,而不是 HTML)。
  • 点击链接会打开下载对话框,不需要window.open
猜你喜欢
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
相关资源
最近更新 更多