通过PHP下载图像
我有一个名为generate.PHP的PHP文件,它根据我设置的一些参数生成一封PNG电子邮件。例如,可以使用返回“myString”文本的图像来显示图像 然后,我想添加一个链接,允许用户下载图像: 我使用以下代码创建了一个文件download.php:通过PHP下载图像,php,Php,我有一个名为generate.PHP的PHP文件,它根据我设置的一些参数生成一封PNG电子邮件。例如,可以使用返回“myString”文本的图像来显示图像 然后,我想添加一个链接,允许用户下载图像: 我使用以下代码创建了一个文件download.php: header('Content-disposition: attachment; filename=string.png'); header('Content-type: image/png'); readfile('generatePictu
header('Content-disposition: attachment; filename=string.png');
header('Content-type: image/png');
readfile('generatePicture.php?string=' . $_REQUEST["string"]);
但是,当我下载png文件时,我似乎无法下载。有什么建议吗?会话锁定。如果有两个脚本使用
session\u start()
,第一个脚本将打开并锁定会话的缓存,第二个脚本必须等待第一个脚本完成后才能打开缓存
如果您有一个长时间运行的脚本,但不想独占用户的会话,则不要为该脚本调用session\u start()
,或者在完成会话数据后,但在开始长时间运行操作之前调用该脚本
或者,或者使用两个不同的浏览器打开两个单独的会话。我已经在多个文件类型中成功地使用了此功能。您需要从文件信息中提取的主要内容是文件类型、文件名和文件大小
header("Content-Description: PHP Generated Data");
header("Content-type:".$type);
header("Content-Disposition: Attachment; Filename=".$name);
header("Content-length:".$size);
echo $data;
这可能会给您带来一些不同的尝试。当您读取PHP文件时,会显示其源代码。下面我将告诉你我解决这个问题的方法
假设generatePicture.php
如下所示:
<?php
$im = imagecreatetruecolor($w, $h);
// work with the picture
header('Content-type: image/png');
imagepng($im);
?>
现在,不要链接到download.php?string=loremipsum
,而是链接到generatePicture.php?string=loremipsum&download=1
希望能有所帮助。您能包含generatePicture.php来调用它吗?这是使用
readfile()
时的问题,因为您的脚本试图直接打开文件。您将需要向该位置发出HTTP请求并输出响应。我不确定如何执行该操作。。。你能提供更多的信息吗?:)。。。但我从不调用session_start(),问题出在echo$data
部分。OP需要从HTTP源读取数据并将其输出。
<?php
$im = imagecreatetruecolor($w, $h);
// work with the picture
if(isset($_GET['download']))
header('Content-disposition: attachment; filename=string.png');
header('Content-type: image/png');
imagepng($im);
?>