《MYSQL數(shù)據(jù)庫php中如何將圖片儲存在數(shù)據(jù)庫里》要點:
本文介紹了MYSQL數(shù)據(jù)庫php中如何將圖片儲存在數(shù)據(jù)庫里,希望對您有用。如果有疑問,可以聯(lián)系我們。
如果你想把二進制的數(shù)據(jù),比如說圖片文件和HTML文件,直接保存在你的MySQL數(shù)據(jù)庫,那么這篇文章就是為你而寫的!我將告訴你怎樣通過HTML表單來儲存這些文件,怎樣訪問和使用這些文件.?
本文概述:?
.在mysql中建立一個新的數(shù)據(jù)庫?
.一個怎樣儲存文件的例子程序?
.一個怎樣訪問文件的例子程序?
在mysql中建立一個新的database?
首先,你必須在你的mysql中建立一個新的數(shù)據(jù)庫,我們將會把那些二進制文件儲存在這個數(shù)據(jù)庫里.在例子中我會使用下列結構,為了建立數(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ù)庫?和?表?應該建立好了.?
一個怎樣儲存文件的例子程序?
用這個例子你可以通過Html表單將文件傳輸?shù)綌?shù)據(jù)庫中.?
store.php3?
//?store.php3?-?by?Florian?Dittmer?<dittmer@gmx.net>?
?>?
//?如果提交了表單,代碼將被執(zhí)行:?
if?($submit)?{?
//?連接到數(shù)據(jù)庫?
//?(你可能需要調整主機名,用戶名和密碼)?
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表單,單擊“瀏覽”選擇一個文件,然后單擊提交.?
當文件上傳至web服務器之后,程序將會告訴你剛剛上傳的文件的ID,記住這個ID,待會要用的.?
一個怎樣訪問文件的例子程序?
你可以通過這個程序訪問你剛才儲存的文件?
//?getdata.php3?-?by?Florian?Dittmer?<dittmer@gmx.net>?
//?調用方法:?getdata.php3?id=?
if($id)?{?
//?你可能需要調整主機名,用戶名和密碼:?
@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.?你可以這樣調用它:?
getdata.php3?id=2?
如果你將圖片儲存在數(shù)據(jù)庫里,?你可以向調用圖片一樣調用它.?
Example:?一個圖片文件在數(shù)據(jù)庫中的ID為3.?你可以這樣調用它:?
怎樣儲存大于1MB的文件:?
如果你想儲存大于1MB的文件,你必須對你的程序、
PHP設置、SQL設置進行許多修改,.?
下面幾條也許可以幫助你儲存小于24MB的文件:?
1、修改?store.php3?,將?MAX_FILE_SIZE?的值改成?24000000.?
2、修改你的PHP設置,在一般情況下,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?
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4843.html