如果你想把二進制的數(shù)據(jù),比如說圖片文件和html文件,直接保存在你的mysql數(shù)據(jù)庫,那么這篇文章就是為你而寫的!我將告訴你怎樣通過html表單來儲存這些文件,怎樣訪問和使用這些文件。?
本文概述:?
。在mysql中建立一個新的數(shù)據(jù)庫?
。一個怎樣儲存文件的例子程序?
。一個怎樣訪問文件的例子程序?
在mysql中建立一個新的database?
首先,你必須在你的mysql中建立一個新的數(shù)據(jù)庫,我們將會把那些二進制文件儲存在這個數(shù)據(jù)庫里。在例子中我會使用下列結(jié)構(gòu),為了建立數(shù)據(jù)庫,?
你必須做下列步驟:?
。進入mysql控制器?
。輸入命令”create?database?binary_data;”?
。輸入命令”use?binary_data;”?
。輸入命令?
“create?table?binary_data?(?id?int(4)?not?null?auto_increment?primary?key,description?char(50),?bin_data?longblob,?filename?char(50),?filesize?char(50),?filetype?char(50));”?(不能斷行)?
如果沒有意外,數(shù)據(jù)庫?和?表?應(yīng)該建立好了。?
一個怎樣儲存文件的例子程序?
用這個例子你可以通過html表單將文件傳輸?shù)綌?shù)據(jù)庫中。?
store.php3?
//?store.php3?–?by?florian?dittmer?
?>?
//?如果提交了表單,代碼將被執(zhí)行:?
if?($submit)?{?
//?連接到數(shù)據(jù)庫?
//?(你可能需要調(diào)整主機名,用戶名和密碼)?
mysql_connect(?“localhost”,?“root”,?“password”);?
mysql_select_db(?“binary_data”);?
$data?=?addslashes(fread(fopen($form_data,?“r”),?filesize($form_data)));?
$result=mysql_query(?“insert?into?binary_data?(description,bin_data,filename,filesize,filetype)?
[接上一行:]?values?($form_description,$data,$form_data_name,$form_data_size,$form_data_type)”);?
$id=?mysql_insert_id();?
print?”?
this?file?has?the?following?database?id:?$id”;?
mysql_close();?
}?else?{?
//?否則顯示儲存新數(shù)據(jù)的表單?
?>?
file?description:
file?to?upload/store?in?database:
}?
?>?
如果你執(zhí)行了這個程序,你將會看見一個簡單的html表單,單擊“瀏覽”選擇一個文件,然后單擊提交。?
當(dāng)文件上傳至web服務(wù)器之后,程序?qū)嬖V你剛剛上傳的文件的id,記住這個id,待會要用的。?
一個怎樣訪問文件的例子程序?
你可以通過這個程序訪問你剛才儲存的文件?
//?getdata.php3?–?by?florian?dittmer?
//?調(diào)用方法:?getdata.php3?id=?
if($id)?{?
//?你可能需要調(diào)整主機名,用戶名和密碼:?
@mysql_connect(?“localhost”,?“root”,?“password”);?
@mysql_select_db(?“binary_data”);?
$query?=?“select?bin_data,filetype?from?binary_data?where?id=$id”;?
$result?=?@mysql_query($query);?
$data?=?@mysql_result($result,0,?“bin_data”);?
$type?=?@mysql_result($result,0,?“filetype”);?
header(?“content-type:?$type”);?
echo?$data;?
};?
?>?
程序必須知道要訪問那個文件,?你必須將id作為一個參數(shù)。?
例如:?一個文件在數(shù)據(jù)庫中的id為2.?你可以這樣調(diào)用它:?
getdata.php3?id=2?
如果你將圖片儲存在數(shù)據(jù)庫里,?你可以向調(diào)用圖片一樣調(diào)用它。?
example:?一個圖片文件在數(shù)據(jù)庫中的id為3.?你可以這樣調(diào)用它:?
怎樣儲存大于1mb的文件:?
如果你想儲存大于1mb的文件,你必須對你的程序、php設(shè)置、sql設(shè)置進行許多修改,。?
下面幾條也許可以幫助你儲存小于24mb的文件:?
1、修改?store.php3?,將?max_file_size?的值改成?24000000。?
2、修改你的php設(shè)置,在一般情況下,php只允許小于2mb的文件,你必須將max_filesize(在php.ini中)的值改成24000000?
3、去掉mysql的數(shù)據(jù)包大小限制,在一般情況下?mysql?小于1?mb的數(shù)據(jù)包.?
4、你必須用以下參數(shù)重啟你的mysql?
/usr/local/bin/safe_mysqld?-o?key_buffer=16m?-o?table_cache=128?-o?sort_buffer=4m?-o?record_buffer=1m?-o?max_allowed_packet=24m?
5、如果仍然出錯:?
可能是超時錯誤,如果你通過一個很慢的連接來儲存一個很大的文件,php缺省的時間限制為30秒。你可以將max_execution_time(在php.ini中)的值改為-1?
【相關(guān)推薦】
2.?Mysql免費視頻教程
3.?Mysql免費視頻教程
立即學(xué)習(xí)“PHP免費學(xué)習(xí)筆記(深入)”;
4.?Mysql免費視頻教程
5.?Mysql免費視頻教程