当前位置:  开发笔记 > 编程语言 > 正文

将PHP页面作为图像返回

如何解决《将PHP页面作为图像返回》经验,为你挑选了2个好方法。

我试图读取一个图像文件(确切地说是.jpeg),然后"回显"它回到页面输出,但是显示图像...

我的index.php有一个像这样的图像链接:


我的PHP脚本基本上这样做:

1)读取1234.jpeg 2)echo文件内容... 3)我有一种感觉我需要用mime类型返回输出,但这是我迷路的地方

一旦我搞清楚了,我将一起删除文件名输入并将其替换为图像ID.

如果我不清楚,或者您需要更多信息,请回复.



1> Martin Geisl..:

PHP手册有这个例子:


重要的一点是,您必须发送Content-Type标头.此外,您必须注意不要在标记之前或之后在文件中包含任何额外的空格(如换行符).

正如评论中所建议的那样,您可以通过省略?>标记来避免脚本末尾出现额外空格的危险:



您仍然需要小心避免脚本顶部的空白区域.一个特别棘手的白色空间形式是UTF-8 BOM.为避免这种情况,请确保将脚本保存为"ANSI"(记事本)或"ASCII"或"无签名的UTF-8"(Emacs)或类似内容.


为此,一些(包括Zend,PEAR或两者 - 我忘了)建议省略结束?>.它在语法上是完全有效的,并且保证尾随空格没有问题.
但是,但......关闭一个开放的东西是很奇怪的:-)
Totaly同意Frank Farmer,没有结尾的代码?>将更容易调试.这只是一个非常有用的提示.要回答Jared Farrish,这里更容易做得更好,它是对的,它应该在任何地方使用,因为你的代码不应该被窃听或任何东西,如果你不把它,它会告诉你,如果有一些错误.它节省了大量的调试时间.

2> ban-geoengin..:

readfile()通常也用于执行此任务,并且似乎是比使用更好的解决方案fpassthru().

它适用于我,根据文档,它不会出现任何内存问题.

这是我在行动中的例子:

$file_out = "myDirectory/myImage.gif"; // The image to return

if (file_exists($file_out)) {

    //Set the content-type header as appropriate
    $image_info = getimagesize($file_out);
    switch ($image_info[2]) {
        case IMAGETYPE_JPEG:
            header("Content-Type: image/jpeg");
            break;
        case IMAGETYPE_GIF:
            header("Content-Type: image/gif");
            break;
        case IMAGETYPE_PNG:
            header("Content-Type: image/png");
            break;
       default:
            header($_SERVER["SERVER_PROTOCOL"] . " 500 Internal Server Error");
            break;
    }

    // Set the content-length header
    header('Content-Length: ' . filesize($file_out));

    // Write the image bytes to the client
    readfile($file_out);

}
else { // Image file not found

    header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");

}


代码`header($ _ SERVER ["SERVER_PROTOCOL"]."404 Not Found");`如果文件不存在,则可以使用`,并且需要在响应中通知.
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有