php檔案上傳 php上傳檔案到資料庫

WBOY
發布: 2016-07-25 08:51:37
原創
2052 人瀏覽過
php如何上傳檔案到資料庫中,這裡分享幾個例子,掌握下php將檔案儲存到mysql資料庫的方法,怎麼讓php上傳檔案並儲存到資料庫的實例程式碼。

php上傳檔案到資料庫 無非是在資料庫中建一個longblob字段來保存這個文件 不過如果上傳4--5m的文件,這時候就會有些問題要注意

1,修改php.ini

post_max_size upload_max_filesize

2個參數的值,使他們比你需要上傳檔案的大小大

2,修改my.cnf 修改mysql資料庫的max_allowed_pa​​cket參數的值 此參數意義: max_allowed_pa​​cket 一個包的最大尺寸。訊息緩衝區被初始化為net_buffer_length字節,但是可在需要時增加到max_allowed_pa​​cket個位元組。缺省地,該值太小必能捕捉到大的(可能錯誤)包。如果你正在使用大的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

具體內容:

$dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb"); ?> '需要開啟一個目錄 "./" 'readdir.php 檔案定位於這個目錄: $path = "./"; $dir_handle = opendir($path) or die("unable to open directory $path");

把圖象分類,並且讀出正在使用的一些數據 fopen '轉換 base64_encode ' 插入到表裡

while ($file = readdir($dir_handle)) { $filetyp = substr($file, -3); if ($filetyp == 'gif' or $filetyp == 'jpg') { $handle = fopen($path . "/" . $file,'r'); $file_content = fread($handle,filesize($path . "/" . $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

$dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb"); ?>

讀出圖片使用的程式碼image.php?img=x:

$img = $_request["img"]; ?>

之後需要連接資料庫,然後讀出:

$result = mysql_query("select * from images where imgid=" . $img . ""); if (!$result) { echo("請求錯誤: " . mysql_error() . ""); exit(); } while ($row = mysql_fetch_array($result)) { $imgid = $row["imgid"]; $encodeddata = $row["sixfourdata"]; } ?>

mysql_close($dbcnx); echo base64_decode($encodeddata); ?>

理解base64-encoded 圖象資料格式。 "讓我們來看看具體的圖片吧!" view.php image.php?img=1 image.php?img=357

readdir.php:

################################ # db connection # change these values ################################ $dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb"); ############################### # db connection # change these values ############################### $dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb");

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

$dbcnx = mysql_connect("localhost", "username", "password"); $dbcnx = mysql_connect("localhost", "username", "password");

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

$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

//下面兩句程式也可以這麼寫 //$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

檔案上傳表單
选择上传文件


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板