亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

利用PHP與MYSQL保存和輸出文件

添加時間:2014-7-25 16:59:04  添加: 思海網絡 

本地文件上傳到服務器后,服務器的腳本對文件進行保存,一般有兩種方式,一種是作為文件保存到機器的特定目錄下,但是這里就有很多諸如文件重名帶來 的種種不便之處,有的程序自動改文件名字,把名字加上上傳時間等方法以保證文件名的唯一性,這樣失去了文件的原始名字,通過文件名查詢特定的文件信息也有 很多困難,不利于文件的統一管理;一種是把文件保存到數據庫中利用數據庫的強大功能,可以方便的實現文件的各種操作。本文采用的是第二種方法。

這一組程序演示了,如何將硬盤的一個文件通過網頁,上傳到服務器的數據庫里面,并且讀出文件的內容。

使用說明:

一共有5個程序,說明如下:
1. file.sql --- 本程序要用到的數據庫表的結構[注:數據庫用的是test]
2. upload.php --- 上傳表單
3. submit.php --- 上傳處理程序
4. show_info.php --- 顯示部分上傳的文件信息
5. show_add.php --- 顯示[下載]文件

///////////////////////////////////////////////////

(1)file.sql ---

//簡要說明
保存上傳得文件的基本信息的數據庫結構,此處注意保存文件內容的字段,使用longtext類型因為普通的blob類型最大存儲64K字節。另外,一般php的默認配置最大上傳文件為2M,如果上傳的文件特別大,莫忘了調整php.ini的設置哦。
//文件源碼

create table receive(
id int NOT NULL auto_increment, #主鍵,自動累加
file_data longblob, #文件內容
file_type varchar(100), #文件類型
file_name varchar(255), #文件名字
file_size int, #文件大小
PRIMARY KEY(id) #主鍵
)

//////////////////////////////////////////////////////////////////////

(2)upload.php ---

//簡要說明
上傳界面,用戶選擇文件,然后提交給submit.php處理值得注意的是一個 MAX_FILE_SIZE的隱藏值域,通過設置其VALUE可以限制上載文件的大小。
//程序源碼

<html>
<head>
<title>文件上傳表單</title>
</head>
<body>
<table>
<form enctype='multipart/form-data' name='myform' action='submit.php'
method='post'>
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE ="1000000">
<tr><td>選擇上傳文件</td><td>
<input name='myfile' type='file'></td></tr>
<tr><td colspan='2'><input name='submit' value='上傳'
type='submit'></td></tr>
</table>
</body>
</html>

//////////////////////////////////////////////////////////////////////

(3)submit.php ---
 
//簡要說明
把用戶上傳得文件連同文件的基本信息保存到數據庫里
//程序源碼

<?php
if($myfile != "none" && $myfile != "") { //有了上傳文件了
//設置超時限制時間,缺省時間為 30秒,設置為0時為不限時
$time_limit=60;
set_time_limit($time_limit); //
//把文件內容讀到字符串中
$fp=fopen($myfile, "rb");
if(!$fp) die("file open error");
$file_data = addslashes(fread($fp, filesize($myfile)));
fclose($fp);
unlink($myfile);
//文件格式,名字,大小
$file_type=$myfile_type;
$file_name=$myfile_name;
$file_size=$myfile_size;
//連接數據庫,把文件存到數據庫中
$conn=mysql_connect("127.0.0.1","***","***");
if(!$conn) die("error : mysql connect failed");
mysql_select_db("test",$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);
//下面這句取出了剛才的insert語句的id
$id=mysql_insert_id();
mysql_close($conn);
set_time_limit(30); //恢復缺省超時設置
echo "上傳成功--- ";
echo "<a href='show_info.php?id=$id'>顯示上傳文件信息</a>";
}
else {
echo "你沒有上傳任何文件";
}
?>

//////////////////////////////////////////////////////////////////////

(4)show_info.php ---

//簡要說明
從數據庫里取出文件的基本信息[文件名和文件大小]。
//程序源碼

<?php
if(!isset($id) or $id=="") die("error: id none");
//定位記錄,讀出
$conn=mysql_connect("127.0.0.1","***","***");
if(!$conn) die("error: mysql connect failed");
mysql_select_db("test",$conn);
$sql = "select file_name ,file_size from receive where id=$id";
$result = mysql_query($sql);
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 "<hr>上傳的文件的信息:";
echo "<br>The file's name - $name";
echo "<br>The file's size - $size";
echo "<br><a href=show_add.php?id=$id>附件</a>";
?>

//////////////////////////////////////////////////////////////////////

(5)show_add.php ---

//簡要說明
從數據庫里取出文件內容
//程序源碼

<?php
if(!isset($id) or $id=="") die("error: id none");
//定位記錄,讀出
$conn=mysql_connect("127.0.0.1","***","***");
if(!$conn) die("error : mysql connect failed");
mysql_select_db("test",$conn);
$sql = "select * from receive where id=$id";
$result = mysql_query($sql);
if(!$result) die("error: mysql query");
$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;
?>

關鍵字:PHP、MYSQL、數據庫、服務器

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站