猿问

使用 Image header() 和 readfile() 在 PHP 页面上显示 Base64

我正在编写一个脚本,在对 PHP 函数进行一些操作后,我base64在$base64Image变量中生成图像数据。现在我想base64在网络浏览器上将该图像数据显示为完整图像,与image.jpeg. 为此,我写了一些代码,如下所示......


截图.php

<?php

/*------------------------

// Basic PHP Operations //

------------------------*/

// Get URL Parameters

$key1 = $_GET["key1"];

$key2 = $_GET["key2"];


// Some PHP Operations...........................................................................


// An Example base64 Image Else This Variable Will Be Filed After Some PHP Operations


// Convert base64 Image to Real Image

$imageFile = base64_decode($base64Image);


// Get Image filesize For Header

$filesize = filesize($imageFile);


/*-------------------------------------------------

// Image Output (Convert PHP File In Image File) //

-------------------------------------------------*/

header( 'Pragma: public' );

header( 'Expires: 0' );

header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );

header( 'Cache-Control: private',false );

header( 'Content-Disposition: attachment; filename="screenshot.png"' ); // Default File Name Will Be "screenshot.png"

header( 'Content-Transfer-Encoding: binary' );

header('Content-Type: image/png');      // Becasue Base64 Image Is Of PNG Type Fixed

header( 'Content-Length: '.$filesize );

readfile( $imageFile );

?>

我正在尝试在 HTML 文件中显示上图,如下所示。


截图.html

<img src="screenshot.php?key1=value1&key2=value2" alt="screenshot"/>

经过所有这些尝试,我仍然无法直接在.php页面或.html页面中看到我的图像。无论如何提前感谢。


注意: 我不想强制下载图像。即使有人试图打开screenshot.php,它也应该在浏览器页面上显示图像而不是下载。


慕的地10843
浏览 102回答 1
1回答

Smart猫小萌

您不能在字符串上使用 filesize(),Content-Disposition: attachment 标头也会强制下载。将 base64 下的所有内容更改为:header( 'Pragma: public' );header( 'Expires: 0' );header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );header( 'Cache-Control: private',false );header( 'Content-Transfer-Encoding: binary' );header('Content-Type: image/png');&nbsp; &nbsp; &nbsp; // Becasue Base64 Image Is Of PNG Type Fixedecho $imageFile我什至不确定你是否需要这些标头中的大部分,当我测试它时我只是使用了 Content-Type。
随时随地看视频慕课网APP
我要回答