2016-08-26 43 views
0

因此,我在一個頁面上設置了一個小系統,您可以使用輸入標籤輸入一對圖像,然後當您點擊提交時,它會將您帶到一個新頁面以檢查您的條目。從_POST值中獲取圖像

現在我有了這個值被傳遞到第二頁:

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

照片顯示爲littl帶缺失圖像圖標的空盒子。

我得到的圖像錯了,執行錯了,還是什麼?

任何幫助表示讚賞,在此先感謝。

+1

'< input type ='file'/>'上傳圖片?如果是這樣,他們將在PHP的'$ _FILES'數組中,而不是'$ _POST'數組。另外,在收到上傳的圖像之後,您需要將它們放在某個地方,然後回顯將它們移動到的路徑(請參閱PHP的'move_uploaded_file()'函數) –

+0

請參閱http://php.net/manual/ zh/features.file-upload.post-method.php –

+0

可以向我們提供您正在使用的輸入嗎? –

回答

0

這似乎不可能在你試圖做到這一點。當一個文件被放入$_POST變量中時,它將被賦予臨時文件名稱,這個文件只能存在很短的時間(可能只有在初始頁面請求結束之前纔可靠,然後PHP會清除它)。這對於<img>標記不起作用,因爲當瀏覽器加載到下一頁時,瀏覽器將在初始頁面加載後爲該文件執行單獨的請求,並且它不會再存在。

正確的做法是使用move_uploaded_file()使用$_POST中提供的tmp_name變量將文件永久保存到磁盤。這意味着您必須想出一種方法來跟蹤它,並在用戶決定不使用時進行清理。

我希望你的方法可行。這將是非常方便的:)

+1

文件不會放在'$ _POST'中。 –

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