如何在“另存为”对话框中强制使用正确的文件扩展名? (.jpg 而不是 .php)

Posted

技术标签:

【中文标题】如何在“另存为”对话框中强制使用正确的文件扩展名? (.jpg 而不是 .php)【英文标题】:How to force the proper file extension in the "save as" dialog? (.jpg instead of .php) 【发布时间】:2013-09-16 11:32:56 【问题描述】:

为了对网站图片进行密码保护,我通过 php 访问它们。 不使用网址“meme_penguin.jpg”,我使用“image.php?file=penguin”。 这非常适合显示它,除非用户尝试“另存为”。

在 chrome 中,“另存为”对话框将建议文件类型为 PHP 而不是 JPG 在 Internet Explorer 中会提示 BMP

显然用户可以更改文件类型并重命名文件。然而,这不是一个优雅的解决方案,并且肯定会导致问题。

我们如何使用正确的扩展名 JPG 自动“另存为”?有替代方法吗? - 非常感谢!!

【问题讨论】:

【参考方案1】:

找到了!我错过了第三行代码。 您可以使用它在页面中显示安全图像,或将其下载为 jpg 从***的另一个问题中得到前两行

//need this two lines to work properly on IE8
header("Pragma: "); 
header("Cache-Control: ");

//was missing this line
header('Content-Disposition: attachment; filename="renamed.jpg"');

header("Content-Type: image/jpeg");
echo file_get_contents("images/somepic.jpg");

from php.net

【讨论】:

【参考方案2】:

在响应中将内容类型标头设置为适当的值

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 14.17 内容类型

header('Content-Type: image/jpeg');

【讨论】:

你试过这个@cske 吗?因为你似乎没有。这是我写的首先显示图像,它仍然“另存为”PHP而不是JPG!!! 您未能包含您尝试过的代码。您可以搜索此 Content-Disposition 标头 ietf.org/rfc/rfc2183.txt,或使用重写规则通过 php 提供图像 好吧@cske我自己想通了,失败了!我真正想要的实际上是有用的帮助。无论如何,我最终想通了,但无法发布答案,因为我必须等待 5 个小时......

以上是关于如何在“另存为”对话框中强制使用正确的文件扩展名? (.jpg 而不是 .php)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 将默认文件扩展名放在另存为对话框中?

如何在不离开 php 页面的情况下强制保存另存为对话框?

通过 jQuery GET 强制“另存为”对话框

不考虑另存为文件类型的另存为通用文件对话框

程序中的对话框应用- ”另存为“对话框

Firefox 3.x 扩展:对话框“另存为”-选择开启器,如何打开?