我想把圖片傳到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