从_POST值获取图像

时间:2016-08-26 23:15:57

标签: php jquery html

所以我设置了一个小系统,在一个页面上,你使用输入标签输入几个图像,然后当你点击提交时,它会带你到一个新的页面来审查你的条目。

现在我已将此值传递到第二页:

$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>

照片显示为带有缺失图像图标的小空框。

我是否弄错图像,执行错误或什么?

提前感谢任何帮助。

3 个答案:

答案 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
?>