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

データベース内のブロブ? [あなたはなぜ子猫を嫌いですか?](http://stackoverflow.com/questions/3401761/remote-image-file-to-sqlite-blob-in-php/3401861#3401861) – NullUserException

答えて

9

それを削除し、それを示し、その後、ディスクに保存それをサーバーに保管し、保管し、ページを変更せずに表示するだけです。

+0

これは悪い考えです。私はあなたが簡単にJavaScriptでこのようなことをすることができると聞いた。 – noob

0

私はMySQLyetの画像タイプBLOBを格納していませんよ。 $ _FILES ['image']をどのように表示するのですか?

保存したのとまったく同じ方法です。

+0

header( 'Content-type: image/$ type ');? – user892134

+0

あなたが望むヘッダを使用してください。データベースやフォームからこの画像を入手しても差はありません –

0

"tmp_name"は、一時的なリソースであることを示唆している可能性があります。あなたがしたい場合は

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

をしかし:そして、あなたはこのようにプレビューすることができ、サーバ上の画像を保存したくない場合は

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

関連する問題