PHP header()问题无法输出图像
我有3个文件PHP header()问题无法输出图像,php,Php,我有3个文件 upload.html//它将图像上传到服务器上 检查\u image.php//如果需要预览,它会调用filter.php来决定是否使用某些过滤器保存或预览图像 filter.php//它在图像上创建一些过滤器,并返回check_image.php//稍后调用“filter.php” 我在预览过滤后的图像输出时遇到问题,因为图像不会出现在屏幕上。 当我尝试重新加载图像时,我收到以下消息: 无法显示图像,因为它包含错误。 我怎样才能解决这个问题? 我的filter.php代码是:
<?php
. . .
if (isset($_GET['id']) && ctype_digit($_GET['id'])
&& file_exists($dir . '/' . $_GET['id'] . '.jpg')
) {
$image=imagecreatefromjpeg($dir . '/' . $_GET['id'] . '.jpg');
} else {
die('Invalid image specified!');
}
//apply the filter
$effect = (isset($_GET['e'])) ? $_GET['e'] : -1;
switch($effect) {
case IMG_FILTER_NEGATE:
. . .
}
//show the image
header('Content-Type: image/jpeg');
imagejpeg($image, '', 100);
?>
我认为这个问题是由于header()函数引起的,请帮助您确实有一个轻微的标题输入错误;将其更改为:
header("Content-Type:image/jpeg"); //note the no space after the colon.
header("Cache-Control:max-age=17280000, public"); //so as to enable caching - in most cases you do want this.
还要确保在header()之前没有任何输出,否则它将失败
(但是如果没有完整的代码,我当然无法测试它——我知道我刚才提供的代码在我的用例中工作。)
HTH返回的文件看起来如何?使用hexeditor查看它是否是有效的JPEG,或者是否有意外的输出。只需对
标题('Content-Type:image/JPEG');
行进行注释,然后检查您得到的内容。如果有任何错误,您可以在浏览器中看到它,而图像标题已消失标题('Content-Type:image/JPEG'));
是有效的。参考PHP手册hmm,它给了我一次空格错误(除了删除空格外,没有做任何其他更改-至少git没有显示任何其他更改)但我想得更多的是,我怀疑头之前有输出-例如UTF字节顺序标记;确保没有。最可能的原因是php生成的一些警告。我对头进行了注释,并收到消息: