2011-11-12 55 views
2

如何在提交表单后显示上传的图像?提交表单后,它将成为预览页面,所以我不会将图像类型BLOB存储在MySQLyet中。我如何显示$ _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 
} 

?> 
+1

Blob在数据库中? [为什么你讨厌小猫?](http://stackoverflow.com/questions/3401761/remote-image-file-to-sqlite-blob-in-php/3401861#3401861) – NullUserException

回答

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" />; 
} 

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

+0

这听起来像个糟糕的主意。我听说你可以很容易地在JavaScript中做这样的事情。 – noob

0

我不是存储MySQLyet图像类型BLOB。我如何显示$ _FILES ['image']?

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

+0

use header('Content-type:图像/ $类型');? – user892134

+0

使用任何你想要的标题。如果您从数据库获得此图像或形式为 –

0

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

<? 
$preview_file = false; 
if(is_uploaded_file($tmpname) && [email protected]($tmpname)){ 
    $preview_file = "./tmp/tmp_preview.extension"; 
    move_uploaded_file($tmpname, realpath($preview_file)); 
} 
if($preview_file){ 
    // show preview 
} 
+0

重要<?不再适用于更新的PHP版本 – noob

+0

mmh,可能取决于php.ini。我在5.3.6中使用它 – lcapra