表单提交后显示$ _FILES ['image']

时间:2011-11-12 08:49:11

标签: php

如何在提交表单后显示上传的图片?提交表单后,它将是一个预览页面,所以我不会在MySQLyet中存储图像类型BLOB。如何显示$ _FILES ['image']?

<?php

if(isset($_POST['submit'])) {

 //preview page

$info = getimagesize($_FILES['image']['tmp_name']);
$imagetype = $info['mime'];
$tmpname = $_FILES['image']['tmp_name'];
$fp = fopen($tmpname,'r');
$data = fread($fp,filesize($tmpname));
$data = addslashes($data);
fclose($fp);

} else {
?>

<form enctype="multipart/form-data" action="http://www.example.com/submit" method="POST">
<input type="file" name="image" value="" size="50" />
<input type="submit" name="submit" value="submit" />
</form>

<?php
}

?>

3 个答案:

答案 0 :(得分:9)

如果您不想将图像存储在服务器上,可以像这样预览:

<?php
if (isset($_FILES['image'])) {
    $aExtraInfo = getimagesize($_FILES['image']['tmp_name']);
    $sImage = "data:" . $aExtraInfo["mime"] . ";base64," . base64_encode(file_get_contents($_FILES['image']['tmp_name']));
    echo '<p>The image has been uploaded successfully</p><p>Preview:</p><img src="' . $sImage . '" alt="Your Image" />;
}

但是如果你想将它存储在服务器上,只需存储它并在不改变页面的情况下显示它。

答案 1 :(得分:0)

  

我没有在MySQLyet中存储图像类型BLOB。如何显示$ _FILES ['image']?

与存储它的方式完全相同。

答案 2 :(得分:0)

因为“tmp_name”可能表明它是一个临时资源。将其保存到磁盘,然后显示,然后将其删除

 <?
 $preview_file = false;
 if(is_uploaded_file($tmpname) && $info=@getimagesize($tmpname)){
   $preview_file = "./tmp/tmp_preview.extension";
   move_uploaded_file( $tmpname, realpath($preview_file) );
 }
 if($preview_file){
   // show preview
 }