新聞中心
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)PHP中怎么將文件保存到數(shù)據(jù)庫,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
首先是信息收集頁面。讓用戶選擇要上載的文件。此頁面的html代碼如下:
〈!--beginofpost.htm--〉
〈p〉 〈/p〉
〈formmethod="POST"action="insert.php"ENCTYPE="multipart/form-data"〉
〈p〉〈b〉個(gè)人簡歷提交〈/b〉〈/p〉
〈p〉姓名:〈br〉
〈inputtype="text"name="Name"size="20"〉〈/p〉
〈p〉個(gè)人簡介:〈br〉
〈textarearows="2"name="Intro"cols="20"〉〈/textarea〉〈/p〉
〈p〉簡歷文件:〈br〉
〈inputtype="file"name="ResuFile"〉〈/p〉
〈p〉〈inputtype="submit"value="提交"name="B1"〉〈/p〉
〈/form〉
〈!-Endofpost.htm--〉
注意,ENCTYPE關(guān)鍵字一定不能省,否則文件無法正確上載。
這里,我們?cè)侔严驍?shù)據(jù)庫插入記錄的代碼重新設(shè)計(jì):
〈?
//beginoffileinsert.php
if($ResuFile!="none")
//確定用戶選擇了文件
{
$Size=filesize($ResuFile);
//確定文件大小
$mFileData=addslashes(fread(fopen($ResuFile,"r"),$Size));
//讀取文件,對(duì)內(nèi)容進(jìn)行處理
unlink($ResuFile);
//刪除上載臨時(shí)文件
}
$LinkID=@mysql_connect("localhost","root","")ordie("不能連接到數(shù)據(jù)庫服務(wù)器!可能是數(shù)據(jù)庫服務(wù)器沒有啟動(dòng),或者用戶名密碼有誤!");
$DBID=@mysql_select_db("ResumeDB",$LinkID)ordie("選擇數(shù)據(jù)庫出錯(cuò),可能是您指定的數(shù)據(jù)庫不存在!");
$query="insertintoResume(Name,Intro,ResuFile)values('$Name','$Intro','$mFileData')";
$result=@mysql_query("$query",$LinkID);//執(zhí)行查詢,插入文件到數(shù)據(jù)庫
if(!$result)
echo"數(shù)據(jù)插入失敗!";
else
echo"文件上載成功!";
@mysql_close($LinkID);
//endoffileinsert.php
?〉
有了上面的基礎(chǔ),寫出從數(shù)據(jù)庫讀數(shù)據(jù)的程序應(yīng)該很簡單了。需要注意的是文件向客戶發(fā)送的方法。服務(wù)器必須向?yàn)g覽器發(fā)送頭信息,說明將要發(fā)送的數(shù)據(jù)為word文檔。如果用戶計(jì)算機(jī)裝有MSWord,瀏覽器將自動(dòng)調(diào)用word進(jìn)行文檔顯示。
怎樣利用PHP將文件保存到數(shù)據(jù)庫
我們可以設(shè)置一個(gè)超級(jí)鏈接,來下載這個(gè)Word文件:
〈?
//beginoffileshow.php
$LinkID=@mysql_connect("localhost","root","")ordie("不能連接到數(shù)據(jù)庫服務(wù)器!可能是數(shù)據(jù)庫服務(wù)器沒有啟動(dòng),或者用戶名密碼有誤!");
$DBID=@mysql_select_db("ResumeDB",$LinkID)ordie("選擇數(shù)據(jù)庫出錯(cuò),可能是您指定的數(shù)據(jù)庫不存在!");
$query="insertintoResume(Name,Intro,ResuFile)values('$Name','$Intro','$mFileData')";
$result=@mysql_query("$query",$LinkID);
//執(zhí)行查詢,插入文件到數(shù)據(jù)庫
$query="selectID,Name,IntrofromResume";
//生成SQL語句
$result=mysql_query($query,$LinkID);//執(zhí)行,結(jié)果集保存到變量$result中
$num=mysql_num_rows($result);//取得查詢返回的記錄行數(shù)
if($num==0)
{
echo"沒有找到任何記錄";
exit();
}
while($row=mysql_fetch_array($result))//取結(jié)果集的下一行數(shù)據(jù)到數(shù)組$row中
{
echo$row["ID"]."".$row["Name"]."".$row["Intro"]."";
echo"〈ahref="download.php?ID=".$row["ID"].""〉查看Word文檔〈/a〉〈br〉";
}
//endoffileshow.php
?〉
訪問文件show.php,用戶看到的是個(gè)人簡要信息的列表。點(diǎn)擊“查看Word文檔”,即可看到對(duì)應(yīng)成員詳細(xì)的個(gè)人簡歷。
Word文檔的顯示是用下面的文件:
〈?
//beginoffiledownload.php
$LinkID=@mysql_connect("localhost","root","")ordie("不能連接到數(shù)據(jù)庫服務(wù)器!可能是數(shù)據(jù)庫服務(wù)器沒有啟動(dòng),或者用戶名密碼有誤!");
$DBID=@mysql_select_db("ResumeDB",$LinkID)ordie("選擇數(shù)據(jù)庫出錯(cuò),可能是您指定的數(shù)據(jù)庫不存在!");
$query="selectResuFilefromResumewhereID=$ID";
//$ID為調(diào)用傳遞的變量
$result=@mysql_query("$query",$LinkID);
//執(zhí)行查詢,從數(shù)據(jù)庫讀取文件內(nèi)容
if(mysql_num_rows($result)〈1)
{
echo"沒有找到相應(yīng)的文件!";
exit();
}
$row=mysql_fetch_array($result);
$mFileData=$row["ResuFile"];
//讀取個(gè)人簡歷的內(nèi)容(Word文件格式的數(shù)據(jù))
header("Content-type:application/msword");
//發(fā)送頭信息,說明將要發(fā)送的數(shù)據(jù)為word文檔
echo$mFileData;
//發(fā)送文檔數(shù)據(jù)
//endoffiledownload.php
?〉
至此,我們已經(jīng)實(shí)現(xiàn)了個(gè)人簡歷的提交、數(shù)據(jù)庫存儲(chǔ)、信息瀏覽等功能,基本完成了“人才信息交流”的框架功能。
需要說明的是,通過PHP進(jìn)行文件上載及數(shù)據(jù)庫存儲(chǔ)是個(gè)較突出的技術(shù)難題。很多關(guān)于PHP的網(wǎng)站都不斷出現(xiàn)這類問題。這些操作,對(duì)平臺(tái)、環(huán)境設(shè)置依賴性較大。不同的平臺(tái)配置,都可能導(dǎo)致操作的失敗。
上述就是小編為大家分享的PHP中怎么將文件保存到數(shù)據(jù)庫了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享題目:PHP中怎么將文件保存到數(shù)據(jù)庫-創(chuàng)新互聯(lián)
文章URL:http://fisionsoft.com.cn/article/jhepg.html