【问题标题】:link.download isn't downloading an image to desktoplink.download 没有将图像下载到桌面
【发布时间】:2014-07-03 19:50:27
【问题描述】:

我正在尝试使用 link.download = ""; 命令通过 JavaScript 在本地保存文件。我要做的是获取存储在服务器上的图像,并将其保存在用户的桌面上。这是我的代码:

function savePhoto(link){
    link.href = "img/profile01.jpg";
    link.download = "photo.jpg";
}

它可以在 FireFox 中毫无问题地打开下载对话框,并在 Chrome 中很好地下载。但是,Internet Explorer 11 通过将图像地址放入 URL 栏中来在同一窗口中打开图像,而不是提供“保存文件”对话框。

火狐:

IE 11:

是否有针对 IE 的解决方法,以便我可以提供“保存文件”对话框而不是在浏览器中显示图像?

【问题讨论】:

  • 据此web site,IE不支持下载属性。
  • 哦,哇。看来我也会遇到 Safari 和 iOS 用户的问题。是时候开始寻找解决方法了!

标签: javascript save internet-explorer-11


【解决方案1】:

Download 属性在 IE 甚至 Safari 中都不起作用。

你可能想用这个来改变标题:

Content-disposition: attachment; filename=huge_document.pdf

huge_document.pdf 将是您的文件名。

这是一种使用 PHP 的方法:

<?php
header("Content-disposition: attachment; filename=huge_document.pdf");
header("Content-type: application/pdf");
readfile("huge_document.pdf");
?>

您也许可以只配置您的服务器以使用该标头。

【讨论】:

  • 原谅我不明白...我将不得不更改什么标题?我应该将链接指向您编写的 PHP 文件吗?
  • 您想更改 HTTP 标头。它们有几种解决方法。你可以通过 PHP 或在服务器的帮助下完成,例如:Apache 和 NGiNX。要使用 PHP 脚本,你只需要指向我给你的 PHP 脚本。
  • 太棒了!这就像一个魅力!我将您的 php sn-p 保存到一个名为 downloadimg.php 的文件中,并将我的 JavaScript 更改为:function savePhoto(){window.open("downloadimg.php");}
  • 这个相同的脚本可以与 JQuery $.post() 命令一起使用吗?我正在尝试将 dataURL 变量传递给 PHP,但是当我通过 $.post() 调用 php 时它不起作用,只有当我通过 window.open 调用时它才起作用
猜你喜欢
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2014-03-13
相关资源
最近更新 更多