假设我有一些指向网络上图像的 URL。假设网址是http://www.gearheadwalls.com/wp-content/uploads/2013/07/Mercedes-Benz-S-Class-4.jpg
现在,当用户按下下载按钮时,应该下载图像。
我试过这个:
window.location.href = Link;
但有时它只是在浏览器上打开图像,有时它会按我的意愿下载。
我怎样才能做到这一点?
假设我有一些指向网络上图像的 URL。假设网址是http://www.gearheadwalls.com/wp-content/uploads/2013/07/Mercedes-Benz-S-Class-4.jpg
现在,当用户按下下载按钮时,应该下载图像。
我试过这个:
window.location.href = Link;
但有时它只是在浏览器上打开图像,有时它会按我的意愿下载。
我怎样才能做到这一点?
您可以在锚点上使用HTML5download
属性:
<a href="http://www.gearheadwalls.com/wp-content/uploads/2013/07/Mercedes-Benz-S-Class-4.jpg" download="http://www.gearheadwalls.com/wp-content/uploads/2013/07/Mercedes-Benz-S-Class-4.jpg">
<img src="http://www.gearheadwalls.com/wp-content/uploads/2013/07/Mercedes-Benz-S-Class-4.jpg">
</a>
您需要传递适当的标头以允许用户下载文件。如果您只是在 url 中提供文件链接,浏览器会以不同的方式解释它。他们可能会先尝试在浏览器中打开文件,如果失败,文件将提示为强制下载。
如果您使用的是 PHP,下载脚本中的标头类似于:
header('Content-Type: ' . $mime_type);
header('Content-Disposition: attachment; file="'.$name.'"');
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
header("Cache-control: private");
header('Pragma: private');
完整的教程可以在这里找到:www.phptutorialforbeginners.com/2013/04/file-download-script-in-php-php.html
您必须按照http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html的建议设置 Content-Disposition 标头字段,如果您希望图像不应该由浏览器本地处理。如果您使用 PHP,这个链接可能会有所帮助,http://w3schools.invisionzone.com/index.php?showtopic=39943
唯一的问题是,你不能直接让 apache 为你提供这个文件,作为一个普通的静态资源,或者我不知道如何做这个 Apache :)