我正在编写一个php系统,以根据提供给该方法的参数加载图像.图像正在作为损坏的图像加载


I'm programming a php system to load an image depending on the parameters given to the method. The image is loading as a broken image

我正在编写一个php系统,以根据提供给该方法的参数加载图像。这段代码一直工作正常,直到最近我修改了它。这是那些经典的"它正在工作,但现在,突然之间,它不是"案例之一。我不知道我做了什么搞砸了它,也就是说,如果我做了什么来搞砸它。

public function image($parameters) {
    //default values for parameters
    $param1 = ' ';
    $param2 = ' ';
    if(!empty($parameters)) {
        foreach($parameters as $key => $value){
            if(!empty($parameters[$key+1])) {
                $value = $value . '/';
            }
            switch($key) {
                case 2:
                    $param1 = $value;
                break;
                case 3:
                    $param2 = $value;
                break;
            }
        }
    }
    $dir = '/resources/images/';
    $file = VIEWDIR . $dir . $param1 . $param2;
    echo $file;
    if(file_exists($file)) {
        $file = file_get_contents($file);
        header("Content-type: image/png");
        echo $file;
    }
}

上面的代码产生以下 HTML

在设置标头之前,您无法回显$file,因为这会破坏输出。

从 php.net:

"请记住,在发送任何实际输出之前,必须调用header(),无论是通过普通的HTML标签,文件中的空白行还是从PHP。读取包含或require函数或其他文件访问函数的代码,并且在调用header()之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。'"