php如何上傳檔案到資料庫中,這裡分享幾個例子,掌握下php將檔案儲存到mysql資料庫中的方法,怎麼讓php上傳檔案並存進資料庫的執行個體代碼。 php上傳檔案到資料庫無非是在資料庫中建一個longblob欄位來儲存這個檔案不過如果上傳4--5m的檔案,這個時候就會有些問題要注意 1,修改php.ini post_max_sizeupload_max_filesize 2個參數的值,使他們大於你需要上傳檔案的大小 2,修改my.cnf修改mysql資料庫的max_allowed_packet參數的值 該參數意義:max_allowed_packet一個包的最大尺寸。訊息緩衝區被初始化為net_buffer_length位元組,但是可在需要時增加到max_allowed_packet個位元組。預設地,該值太小必能捕捉大的(可能錯誤)包。如果你正在使用大的blob列,你必須增加該值。它應該象你想要使用的最大blob的那麼大。 一、php把圖片上傳到資料庫 建立3個php檔案:readdir.php - 把圖片放到資料庫的代碼image.php - 顯示實際圖片的代碼view.php - 顯示你如何調用資料庫中的圖片的代碼 1,建立一個資料庫 create table `images` (`imgid` int not null auto_increment ,`sixfourdata` longtext not null ,primary key ( `imgid` ) );readdir.php 具體內容: '需要開啟一個目錄 "./"'readdir.php 檔案定位於這個目錄: $path = "./";$dir_handle = opendir($path) or die("unable to open directory $path");把圖象分類,並且讀出正在使用的一些資料 fopen'轉換 base64_encode' 插入到表裡 關閉設定的目錄,然後處理: 讀出圖片的代碼:image.php 讀出圖片使用的代碼image.php?img=x: 之後需要串連資料庫,然後讀出: 請求錯誤: " . mysql_error() . ""); exit(); } while ($row = mysql_fetch_array($result)) { $imgid = $row["imgid"];$encodeddata = $row["sixfourdata"]; }?> 理解base64-encoded 圖象資料格式。"讓我們來看看具體的圖片吧!" view.php image.php?img=1image.php?img=357 readdir.php: $path = "./";$dir_handle = opendir($path) or die("unable to open directory $path");while ($file = readdir($dir_handle)) {$filetyp = substr($file, -3);if ($filetyp == 'gif' or $filetyp == 'jpg') {$handle = fopen($file,'r');$file_content = fread($handle,filesize($file));fclose($handle);$encoded = chunk_split(base64_encode($file_content)); $sql = "insert into images set sixfourdata='$encoded'"; mysql_query($sql);}} closedir($dir_handle);echo("complete");mysql_close($dbcnx);?> image.php: mysql_select_db("base64imgdb"); $img = $_request["img"]; $result = mysql_query("select * from images where imgid=" . $img . ""); if (!$result) { echo("error performing query: " . mysql_error() . ""); exit(); } while ($row = mysql_fetch_array($result) ) { $imgid = $row["imgid"];$encodeddata = $row["sixfourdata"]; }mysql_close($dbcnx);echo base64_decode($encodeddata);?> view.php (i shouldnt need to post this..) ....二、怎麼讓php 上傳檔案並存進資料庫 1、show_info.php $num=mysql_num_rows($result);if($num<1) die("error: no this recorder"); $data = mysql_result($result,0,"file_data");$type = mysql_result($result,0,"file_type");$name = mysql_result($result,0,"file_name"); mysql_close($conn); //先輸出相應的檔案頭,並且恢複原來的檔案名稱header("content-type:$type");header("content-disposition: attachment; filename=$name");echo $data;?> 2、show_info.php $sql = "select file_name ,file_size from receive where id=$id";$result = mysql_query($sql,$conn);if(!$result) die(" error: mysql query"); //如果沒有指定的記錄,則報錯$num=mysql_num_rows($result);if($num<1) die("error: no this recorder"); //下面兩句程式也可以這麼寫//$row=mysql_fetch_object($result);//$name=$row->name;//$size=$row->size;$name = mysql_result($result,0,"file_name");$size = mysql_result($result,0,"file_size"); mysql_close($conn); echo "上傳的檔案的資訊:";echo " the file's name - $name"; echo " the file's size - $size"; echo " 附件";?> 3、submit.php $myfile=$_files["myfile"]; //設定逾時限制時間,預設時間為 30秒,設定為0時為不限時$time_limit=60; set_time_limit($time_limit); // //把檔案內容讀到字串中$fp=fopen($myfile['tmp_name'], "rb");if(!$fp) die("file open error");$file_data = addslashes(fread($fp, filesize($myfile['tmp_name'])));fclose($fp);unlink($myfile['tmp_name']); //檔案格式,名字,大小$file_type=$myfile["type"];$file_name=$myfile["name"];$file_size=$myfile["size"];die($file_type);//串連資料庫,把檔案存到資料庫中$conn=mysql_connect("localhost","root","admin");if(!$conn) die("error : mysql connect failed");mysql_select_db("nokiapaymentplat",$conn); $sql="insert into receive (file_data,file_type,file_name,file_size) values ('$file_data','$file_type','$file_name',$file_size)";$result=mysql_query($sql,$conn); //下面這句取出了剛才的insert語句的id$id=mysql_insert_id(); mysql_close($conn); set_time_limit(30); //恢複預設逾時設定 echo "上傳成功--- ";echo "顯示上傳檔案資訊";} else { echo "你沒有上傳任何檔案"; } ?> 4、upload.php 檔案上傳表單
|