Php 如何强制用户下载图像(如下载pdf)?
因此,我编写了一个图像库,其中包含下载原始图像的选项(默认情况下,它显示图像的大小调整版本)。我很想知道怎么做 下面的代码将强制用户保存pdf而不是使用浏览器查看它,我希望通过将单击操作与jQuery绑定,为图像(jpg、gif、png)实现相同的效果,我将如何做到这一点 摘自php.netPhp 如何强制用户下载图像(如下载pdf)?,php,jquery,Php,Jquery,因此,我编写了一个图像库,其中包含下载原始图像的选项(默认情况下,它显示图像的大小调整版本)。我很想知道怎么做 下面的代码将强制用户保存pdf而不是使用浏览器查看它,我希望通过将单击操作与jQuery绑定,为图像(jpg、gif、png)实现相同的效果,我将如何做到这一点 摘自php.net <?php // We'll be outputting a PDF header('Content-type: application/pdf'); // It will be called do
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('original.pdf');
?>
有可能吗
编辑:我应该在javascript代码中做什么?这是可能的。服务器(PHP脚本)需要发送内容处置头,如第一个代码段所示。例如:
header('Content-Disposition: attachment; filename="abc.jpg"');
通常,浏览器根据MIME类型决定是否显示或下载。所以我想这就是你想要的: 如果你只是想强制下载 使用header()函数设置 要创建的内容类型 应用程序/八位字节流 Internet Explorer的MIME类型支持 已损坏,因此它不会对 以上。但是,如果你另外 使用您需要的内容处置标题 也可以强制MSIE 5下载 文件 此标题还允许您指定 文件名。这在两种情况下都有效 Netscape和MSIE 5 标题(“内容处置: 附件;文件名=\“myfile.abc\” 编辑:这里有一些有趣的信息,尽管它可能与您的特定用例无关: 如果满足以下条件,则会发生此问题: 内容中的文件名 处置标头使用双字节 字符集(DBCS)字符,例如 作为日本字符。第二 字节,或“开拓者”,任何 DBCS字符包含以下值: 表示保留的文件系统 ASCII字符。例如 “trailbyte”包含以下值: 表示ASCII值,如0x5c或 0x7c 编辑2:如果您只对在客户端上执行此操作感兴趣,这里的回答是:这是可能的,但是IE(多么令人惊讶…)有一个微妙的错误:
<?php
header( 'Content-Type: ' . $your_content_type . '; charset=UTF-8' );
if( strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') !== false ) header( 'Content-Disposition: attachment; filename="'.rawurlencode($your_filename).'"' );
else header( 'Content-Disposition: attachment; filename="'.addslashes($your_filename).'"' );
?>
我应该声明我不需要支持IE6或以下版本,上述声明是否适用于IE7+?我相信它没有改变-如果它对您不起作用,请告诉我谢谢您的快速响应。我刚刚更新了我的问题。我想知道的是javascript代码,而不是PHP。如果你调用一个PHP页面来实际提供图像,那么在PHP中这样做有什么不对?但是在IE上,当文件名中有特殊字符时,这会失败。还有@Alix Axel:WTF你在抱怨什么?@Alon:我在问如何在jquery中通过点击事件触发php代码@阿利克斯:如果你不明白我的问题是什么,我很抱歉,也许我应该更清楚一点。我想问更多的问题来澄清,这是学习的方式,你的猜测对任何人都没有帮助。这是一个学习、分享的地方,而不是一个展示你猜测能力的地方。
header('Content-Disposition: attachment; filename="abc.jpg"');
<?php
header( 'Content-Type: ' . $your_content_type . '; charset=UTF-8' );
if( strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') !== false ) header( 'Content-Disposition: attachment; filename="'.rawurlencode($your_filename).'"' );
else header( 'Content-Disposition: attachment; filename="'.addslashes($your_filename).'"' );
?>