close
我想把圖片傳到mysql 但是圖片一直顯示不出來 我就在上傳的地方 直接測試顯示圖片 結果 也都一樣 檔案確實有抓到 上傳檔案資訊確實都有
<另問 請問圖片能用mysql的binary型態存嗎>
請問要怎麼改
include "../DB/Database.php";//連接資料庫
global $link;
$no=$_GET['no'];
//取得上傳檔案資訊
$image=$_FILES['image'];
$filename=$_FILES['image']['name'];
$tmpname=$_FILES['image']['tmp_name'];
$filetype=$_FILES['image']['type'];
$filesize=$_FILES['image']['size'];
$file=NULL;
//以上資訊皆有收到
if(isset($_FILES['image']['error'])){
if($_FILES['image']['error']==0){
$PSize = filesize($tmpname);
$file = addslashes(fread(fopen($tmpname, "rb"), $filesize));
$file = addslashes(fread($instr,filesize($tmpname)));
//$picture=base64_encode($file);
$sql = "Update inventory set picture='$picture' where no='$no'";
mysql_query($sql);
//測試用↓ (結果顯示都X),內容(類型:無法使用,網址:http://...../picture.php?no=1,大小:無法使用,尺寸28x30像素,建立日期:無法使用,修改日期:無法使用)
()Header( "Content-type: image/pjpeg");
echo $file;
}
}
2013-03-18 21:33:02 補充
$picture=$file;
那行剛不小心少貼上來
上傳更新的問題先撇除在外
目前就是 測試用那邊 為什麼執行起來 圖案是X
2013-03-19 18:03:33 補充
從PHP上傳圖片之後資料 用PHP讀圖片 顯示不出來
從PHP上傳圖片之後資料 用Android 讀圖片 顯示不出來
從Android去別的網址抓圖片 傳到mysql後 用PHP去讀圖片 顯示不出來
從Android去別的網址抓圖片 傳到mysql後 用Android 去讀圖片 顯示的出來
2013-03-19 18:07:03 補充
//從資料庫取得圖片
include "DB/Database.php";//連接資料庫
global $link;
$no=$_GET['no'];
$sql=sprintf("select * from inventory where no='$no'");
$result=mysql_query($sql);
2013-03-19 18:07:25 補充
//顯示圖片
if($row=mysql_fetch_assoc($result)){
header("Content-type: image/jpeg");
echo base64_decode($row['picture']);
}
mysql_close($link);
2013-03-20 13:33:03 補充
一樣都顯示不出來
會不會上傳圖片 跟 讀取圖片的 都有問題
2013-03-20 13:33:58 補充
還是 php.ini 有問題
2013-03-20 14:05:59 補充
資料庫內的存放檔案大小 確實有變
er">
不然我告訴你我的環境好了,因為必須貼程式碼,所以只好用回答的。
我使用的存圖片欄位型態是使用longblob
因為我發現,如果轉好之後欄位太小,會儲存不成功,所以就乾脆用最大的。
以下是程式碼部分,因為是參考別人的,所以大部分是他人的程式碼,只有顯示的部分,我改過而已。
資料表共四個欄位,
idno (int), name1(varchar 50) ,size1(int) ,type1(varchar 50) ,img(longblob)
注意一下,我把所有"<"的這個符號,已改為全形,如果是用複製貼上的話,要記得全部取代為半型
upload.html
<Form Action="insert_img.php" Method="POST" Enctype="multipart/form-data">
<Input Type="File" Name="upfile" ><br>
<Input Type="Submit" value=" 開始上傳 ">
</Form>
insert_img.php
<?
include "_func/config.php" ;
echo "<BLOCKQUOTE>";
echo "檔案名稱:" . $_FILES["upfile"]["name"] . "<BR>";
echo "檔案大小:" . $_FILES["upfile"]["size"] . "<BR>";
echo "檔案類型:" . $_FILES["upfile"]["type"] . "<BR>";
echo "暫存檔名:" . $_FILES["upfile"]["tmp_name"] . "<BR>";
if ( $_FILES["upfile"]["size"] > 0 )
{
//開啟圖片檔
$file = fopen($_FILES["upfile"]["tmp_name"], "rb");
// 讀入圖片檔資料
$fileContents = fread($file, filesize($_FILES["upfile"]["tmp_name"]));
//關閉圖片檔
fclose($file);
// 圖片檔案資料編碼
$fileContents = base64_encode($fileContents);
//連結MySQL Server
$dbnum=mysql_connect("127.0.0.1","root","1234");
//選取資料庫
mysql_select_db("test");
//組合查詢字串
echo strlen($fileContents) ;
$SQLSTR="Insert into upimg (name1,size1,type1,img) values('". $_FILES["upfile"]["name"]."',".$_FILES["upfile"]["size"].",'".$_FILES["upfile"]["type"]."','".trim($fileContents)."')";
echo $SQLSTR ;
//將圖片檔案資料寫入資料庫
if(!mysql_query($SQLSTR)==0)
{
echo "您所上傳的檔案已儲存進入資料庫";
}
else
{
echo "您所上傳的檔案無法儲存進入資料庫";
}
}
else
{
echo "圖片上傳失敗";
}
echo "</BLOCKQUOTE>";?>
showimg.php
<?
$dbnum=mysql_connect("localhost","root","1234");
mysql_select_db("test");
$SQLSTR="select * from myimage where idno=1";
$result=mysql_query($SQLSTR);
if($row = mysql_fetch_object($result)) {
header("Content-Type: ".$row->type1);
echo base64_decode($row->img);
}
?>
我這樣測試,是可以的,圖片上傳,顯示都可以成功
你先這樣測看看,如果我可以你不行的話,那就真的有可能是環境的問題了。
參考資料
http://webcache.googleusercontent.com/search?q=cache:noE5Y5Q4szEJ:forum.twbts.com/archiver/%3Ftid-581.html+&cd=1&hl=zh-TW&ct=clnk
全站熱搜
留言列表