所以我设置了一个小系统,在一个页面上,你使用输入标签输入几个图像,然后当你点击提交时,它会带你到一个新的页面来审查你的条目。
现在我已将此值传递到第二页:
$main_image =$_POST['main_image'];
图片的输入来自第一页,如下所示:
<tr>
<th align="right">Main Photo</th>
<td><input type="file" name="main_image" size="30"></td>
</tr>
然而,当我将图像放在页面底部时,如下所示:
<tr>
<th align="right">Main Rendering/Photo</th>
<td><img src="<?php echo $main_image; ?>" width="50px"></td>
</tr>
照片显示为带有缺失图像图标的小空框。
我是否弄错图像,执行错误或什么?
提前感谢任何帮助。
答案 0 :(得分:0)
这似乎不可能以您尝试的方式进行。当文件放入$_POST
变量时,它会为一个文件的临时名称提供一个非常短的时间(可能只有在初始页面请求结束之前才可靠,然后PHP将清理它)。这对于<img>
标记不起作用,因为当浏览器加载到下一页时,浏览器将在初始页面加载后对该文件执行单独的请求,并且它不会被激活再见。
执行此操作的正确方法是使用move_uploaded_file()
使用tmp_name
中提供的$_POST
变量将文件永久保存到磁盘。这意味着,如果用户决定不使用它,您必须想出一种跟踪它并可能清理它的方法。
我希望你的方法可行。这将非常方便:)
答案 1 :(得分:0)
您只能通过对其进行编码或更改Content-Type标头来回显图像文件。你可以这样做:
$imageFile = $_FILES['yourInputTypeFileName']['tmp_name'];
$imageFileContents = file_get_contents($imageFile);
$withBase64 = base64_encode($imageFileContents);
$imageType = substr($imageFile ,strrpos($imageFile, '.')+1, strlen($imageFile));
echo '<img src="data:image/'.$imageType.';base64,'.$withBase64.'"/>';
答案 2 :(得分:0)
试试这个但请确保您的表单首先enctype="multipart/form-data"
喜欢这个
<form action="" method="post" enctype="multipart/form-data">
然后使用此代码
<?php
$size = getimagesize($_FILES['main_image']['tmp_name']); //get size
$image = "data:" . $size["mime"] . ";base64," . base64_encode(file_get_contents($_FILES['main_image']['tmp_name'])); //get image
echo '<img src="'.$image.'" />'; //outpout
?>