【问题标题】:Error with downloading image as data url将图像下载为数据 URL 时出错
【发布时间】:2016-05-13 19:21:36
【问题描述】:

所以,我正在做一个链接以从数据 url(一个大的)下载图像:

<a download='fileName' href="data:image/png;base64,/9j/4WSsRX...">something</a>

但是,每当我尝试点击该链接时,我都会收到一条错误消息,告诉我一些网络问题。

我做了一个小提琴测试,但它的大小(15mb 的文本)并且需要一些时间来加载:

https://jsfiddle.net/jjydp1ek/

由于 jsfiddle 很难加载,我在 mediafire 中添加了一个文件: http://www.mediafire.com/download/p85y1g442ne9v6m/new++7.html

测试是一个与链接具有相同数据 url 值的图像,图像是可见的,但是我看到在 chrome 上的新选项卡中打开图像的选项不起作用。

我在 ie 11 中使用画布进行此操作,但也失败了

问题:

现在有没有可能让它与下载链接一起使用?

下载文件的数据url有大小限制吗?

如何使用户能够下载该图像?

此外,如果您认为无法理解,请在此处提出问题,或者更正您看到的文本中的任何错误。

谢谢。

【问题讨论】:

  • 我们能得到错误吗?
  • @Jezzabeanz 那里是图像的小提琴,您可以修改它以将该图像转换为链接,并将 src 更改为 href。可以看到不能右键在新标签页中打开,可以通过chrome调试工具试试,会黑屏。
  • 你能做一个更小的小提琴吗?当我尝试使用你的小提琴时,我的笔记本电脑风扇开始疯狂。例如,它不需要是有效的图像,任何数据都可以。
  • 我会尝试添加一个 pastebin 以便您可以在家中测试它,或者查看数据 url 的情况。 (我可以在这里评论答案吗?)

标签: javascript data-url


【解决方案1】:

我有一个 70Mb 的宽带和一台强大的 PC,而那个 JS fiddle 甚至都打不开。

我认为拥有 15MB 的编码字符串是不可行的,因为每次访问时都必须将其下载到页面上。我会尝试以下方法:

  • 优化镜像,如果你有/想要 Gulp 构建系统,你可以合并gulp-imagemin。如果你想走这条路,我认为 Grunt 有其他选择。
  • 将文件存储在服务器上,只需放置指向路径的链接,这是首选解决方案。

回答您的问题

极限:

长度限制

虽然 Mozilla 基本上支持以下数据 URI 长度不限,浏览器不需要支持任何特定的 数据的最大长度。例如,Opera 11 浏览器限制数据 URI 长度约为 65000 个字符。

来源:data URIs - MDN

正在下载

以上关于优化图像的建议是在不损失质量的情况下尽可能小,如果这是一个问题的话。那就试试吧。如果没有,给用户一个指向图像的链接/在页面上显示它不是问题。用户可以右键保存。

注意

当我写完这个响应时,JSFiddle 超时了。

【讨论】:

  • 您使用的是哪个浏览器?我正在使用 chrome 并在 20 分钟内加载它......仍然感谢您告诉我,这不是现在的解决方案。我已经在 mediafire 中上传了一个文件,其中包含“下载”图像的代码。
  • @Gaunt 我使用的是 Chrome 版本 50.0.2661.102,Windows 10。
  • 完全相同的版本,windows 7 不知道 :P
  • 没有解决方案,尝试这样做是错误的,我在需要完整图像的地方从 C# 代码中创建了下载链接。
猜你喜欢
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 2021-06-12
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
相关资源
最近更新 更多