如何强制用户下载图像(如下载pdf)?

所以我写了一个图像库,其中包含下载原始图像的选项(默认情况下,它会显示图像的resize版本)。 我很想知道我该怎么做

以下代码将强制用户保存pdf而不是使用浏览器查看它,我希望通过使用jQuery绑定click操作来实现对图像(jpg,gif,png)的相同效果,我将如何能够执行此操作?

取自php.net

 

HTML:

  

JS:

 $(".download").click(function(){ // call a php to download the image }); 

有可能这样做吗?

编辑:我应该在javascript代码中做什么?

这是可能的。 服务器(PHP脚本)需要在第一个代码段中显示Content-Disposition标头。 例如:

 header('Content-Disposition: attachment; filename="abc.jpg"'); 

这是可能的,但IE(多么令人惊讶……)有一个微妙的错误:

  

编辑 :在javascript中没有更多的事情要做! 只需让用户单击图像的URL,或者只是添加一个单击处理程序,将浏览器发送到图像URL! 在客户端/浏览器端,您无法决定是否应下载或显示URL!

通常,显示或下载的决定是由浏览器根据MIME类型决定的。 所以我认为这就是你想要的:

如果您只想强制下载,请使用header()函数将Content-type设置为application / octet-stream。

Internet Explorer的MIME类型支持已损坏,因此它不会对上述内容做出反应。 但是,如果您另外使用Content-Disposition标头,您还可以强制MSIE 5下载该文件。

此标头还允许您指定文件名。 这适用于Netscape和MSIE 5。

header(“Content-Disposition:attachment; filename = \”myfile.abc \“”);

编辑:这里有一些有趣的信息,虽然它可能与您的具体用例无关:

如果满足以下条件,则会发生此问题:

内容处置标头中的文件名使用双字节字符集(DBCS)字符,例如日语字符。 任何DBCS字符的第二个字节或“trailbyte”包含表示ASCII中文件系统保留字符的值。 例如,“trailbyte”包含表示ASCII值的值,例如0x5c或0x7c。

编辑2:如果您只对在客户端上执行此操作感兴趣,则在此处回答: 在浏览器中强制Mime类型(使用Javascript)