Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何强制用户下载图像(如下载pdf)?_Php_Jquery - Fatal编程技术网

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

Php 如何强制用户下载图像(如下载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

因此,我编写了一个图像库,其中包含下载原始图像的选项(默认情况下,它显示图像的大小调整版本)。我很想知道怎么做

下面的代码将强制用户保存pdf而不是使用浏览器查看它,我希望通过将单击操作与jQuery绑定,为图像(jpg、gif、png)实现相同的效果,我将如何做到这一点

摘自php.net

<?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).'"' );
?>