将readfile图像输出为HTML

时间:2018-01-16 15:27:55

标签: php html

如何在HTML中显示输出的文件?如果脚本是这样的

function function_image($url) {
    $file = file_get_contents($url);
    $type = 'image/jpeg';
    header('Content-Type:'.$type);
    header('Content-Length: ' . filesize($file));
    readfile($file);
}

如何在html中显示它?我需要将其放在 src 属性中吗?或者只是回应它?

<img src="<?php echo function_image('http://otherwebsite.com/image.jpeg'); ?>" />

or 

<?php echo function_image('http://otherwebsite.com/image.jpeg'); ?>

2 个答案:

答案 0 :(得分:1)

您用于输出图像的代码将是它自己的页面,而不仅仅是您调用的函数。例如,我们称之为 image.php

<?php
$file = '../image.jpg';
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
readfile($file);
?>

然后在你的HTML中你会引用image.php,好像它是一个图像,因为它正是它输出的内容:

<img src="image.php" />

HTTP并不关心“文件类型”之类的东西,只有标题和数据。 image.php 会返回图片标题(Content-Type:image/jpeg)和图片数据,因此就浏览器而言,它是图片“文件”。

答案 1 :(得分:-1)

如果您试图隐藏图片来源,那将不会发生,即使Instagram无法在instagram.com中隐藏它。如果用户要查看图像,表示图像已下载到用户计算机,但如果您愿意,可以使用base64编码。

以下是一个例子:

<?php
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
echo '<img src="' . $base64 . '" />';
?>