Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 header()问题无法输出图像_Php - Fatal编程技术网

PHP header()问题无法输出图像

PHP header()问题无法输出图像,php,Php,我有3个文件 upload.html//它将图像上传到服务器上 检查\u image.php//如果需要预览,它会调用filter.php来决定是否使用某些过滤器保存或预览图像 filter.php//它在图像上创建一些过滤器,并返回check_image.php//稍后调用“filter.php” 我在预览过滤后的图像输出时遇到问题,因为图像不会出现在屏幕上。 当我尝试重新加载图像时,我收到以下消息: 无法显示图像,因为它包含错误。 我怎样才能解决这个问题? 我的filter.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生成的一些警告。我对头进行了注释,并收到消息: