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

來源:互聯網
上載者:User
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

檔案上傳表單
選擇上傳檔案
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.