PHP文件上传与管理
时间:2008-01-31 来源:kkboy_dyc
今天做了一个文件上传与管理的模块,在这里记录下来方便以后查阅。
不同于我们想象的那样,当我们从本地选择一个文件,点击上传,文件就顺着网络飞到了服务器存储了下来。在PHP里,文件上传要经历这么一个过程,我们从本地选择一个文件点击上传后,浏览器响应这个事件并向服务器发送一个请求,在服务器验证文件大小,名称,后缀(MIME)后建立连接并将文件保存在缓存中,此时如果没有进行重新命名或者移动等操作,在代码执行完毕后该文件自动从缓存中删除,如进行重新命名或者其他操作该文件就将被保存到指定目录。为了方便管理,我们通常是将文件名以及文件的路径保存到数据库中,而文件本身保存在服务器指定目录下。
怎么说也不如实例分析,我下面通过一个完整的实例来讲价整个文件上传与管理的过程。
1.数据库准备。
采用MYSQL,我们需要建立一个表保存文件的名称与路径。
Create table 'UserFile'(
'id' int(25) not null auto_increment,
'file_name' varchar(100) not null,
'file_url' varchar(200) not null, //注意要给文件路径留下充足的空间,因为它通常很大
'file_date' date not null,
PRIMARY KEY (`id`)
);
2.建立一个表单
此时我们需要建立一个表单从而实现用户接口界面。
Send this file:
这里需要注意, MAX_FILE_SIZE指定了文件上传的大小,单位是字节。该表单提交后发送给upload.php处理。
3.文件上传处理脚本 upload.php
0)
{
echo 'Problem: ';
switch($_FILES['userfile']['error'])
{
case 1: echo
'File exceeded upload_max_filesize'; break;
case 2: echo 'File
exceeded file_max_size'; break;
case 3: echo 'File only
partially upload'; break;
case 4: echo 'No file upload';
break;
}
exit;
}
//验证文件MIME,现在我限定只能上传doc文件,如下,如果只上传文本文件type为 text/plain
if($_FILES['userfile']['type']!='application/msword')
{
echo 'Problem:
The file is not doc format';
exit;
}
//设计文件上传路径并更名
$upfile='/usr2/web/virtualcollege/career/up/'.$_FILES['userfile']['name'];
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $upfile))
{
$sql="insert into UserFile(file_name, file_url, file_date) values
('$file_name','$file_url', now())";
$result=mysql_query($sql); //文件成功上传后将文件信息插入MYSQL数据库
if(!$result)
echo mysql_error();
else
{ Your Personal Information and the file has been send
to us. Thank you!
}
}
exit;
}
else
{echo 'Sorry, upload failed. Please try again later';}
?>
到这里,我们就将文件成功上传并把文件信息插入数据中去了。至于如何调出文件信息并删除与管理,请参考本人之前的文章。累死了。收队!
相关阅读 更多 +
排行榜 更多 +