2011-11-12 56 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