Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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下载图像_Php - Fatal编程技术网

通过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

我有一个名为generate.PHP的PHP文件,它根据我设置的一些参数生成一封PNG电子邮件。例如,可以使用返回“myString”文本的图像来显示图像

然后,我想添加一个链接,允许用户下载图像:

我使用以下代码创建了一个文件download.php:

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);
?>