PHP文件上传类的程序实现
PHP 文件上传类的程序实现
引 言
在Web 应用程序开发中,通常文件上传是不可缺少的功能.用户可以根据各种需求将文档资料或
图像视频等资料上传到 Web 服务器.由于上传文件的类型、大小及编码方式的不同,开发者在设
计上传模块时必须考虑到各种可能出现的问题. 当客户端使用 HTTP 协议进行文件上传,文件上
传过程是比较复杂的.根据网站上传文件的各种需求,开发为实现这些功能的类可以有效地解决
文件上传问题.
1 文件上传过程介绍与配置文件设置
本文使用的开发环境为Wndows+A-pache+MySQL+PHP.PHP 可以实现多种浏览器上传文
件.文件上传的过程其实就是一个文件复制的过程, 客户端通过 HTTP 协议以 POST 方式将表单
提交给服务器后,上传的文件被放置在临时目录里,服务器端脚本对文件进行进一步处理,一般是
要将文件从临时目录移动到指定的目录中,需要使用函数 move_uploaded_file 移动提交的文件,进
而完成整个文件上传过程.
配置文件 php.ini 中设置参数如下
file_uploads : 设为 On, 允许通过 HTTP 上传文件 upload_tmp_dir :文件上传至服务器时用于临时
存储的目录,如果没指定,系统会使用默认的临时文件夹.
upload_max_filesize :允许上传文件大小的最大值, 默认情况下 PHP 上传文件大小为 2 M,用户需
要上传大于 2 M 的文件, 但是利用 HTTP 协议又不能上传太大的文件,因此,需要适当修改相关参
数.
upload_max_filesize 设置数值可以大于 2 M, 即允许上传文件的最大值可以大于默认的 2 M.
post_max_size:PHP 可接收的 post 数据的最大值,该值应大于允许上传文件大小的最大值.设置
post_max_size 数值可以大于 8 M,8 M 通常是通过表单 POST 给PHP 的所能接收的最大值,包括
表单里的所有值.
memory_limit:脚本所占的最大内存数,该值要大于允许上传的文件大小.
max_execution_time:脚本运行的最长时间(s), 默认 30 S.
2 实现文件上传的类
定义一个上传类 upload,其构造函数如下.
function __construct ($fileArr, $savename, $savepath,
$fileformat, $overwrite = 0,$maxsize = 0) {
$this->file = $fileArr['file'];
$this->file_name = $fileArr['name'];
$this->file_size = $fileArr['size'];
$this->file_type = $fileArr['type'];
$this->get_ext();
$this->set_savepath($savepath);
$this->set_fileformat($fileformat);
$this->set_overwrite($overwrite);
$this->set_savename($savename);
$this->set_maxsize($maxsize);
}
在构造函数中,参数$fileArr 为文件数组,name 为上传文件名,size 为上传文件大小,type 为上传文
件类型, 参数 savename 为文件保存名, 参数 savepath 为文件保存路径, 参数 fileformat 为文件格式,
参数 over-write 指是否覆盖文件, 参数 maxsize 为文件最大值.
接下来运行的程序要检查文件格式、检查目录是否可写入文件、检查文件是否已经存在、检查
文件大小是否超过限制, 然后使用 move_uploaded_file 函数上传文件,代码如下.
if (!$this->validate_format())
{
$this->errno = 1;
return false;
}
if(!@is_writable($this->savepath))
{
$this->errno = 2;
return false;
}
if ($this->overwrite == 0 && @file_exists($th-
is->savepath.$this->savename))
{
$this->errno = 3;
return false;
}
if ($this->maxsize != 0 )
{
if ($this->file_size > $this->maxsize)
{
$this->errno = 5;
return false;
}
}
if (!move_uploaded_file ($this->file, $th-
is->savepath.$this->savename))
{
$this->errno = 4;
return false;
}
3 文件上传解决方案
为了实现文件的上传, 在<form> 标记中, 必须设置属性 enctype="multipart/form-data",服务器就会
知道上传文件有表单数据.当文件上传时, 上传文件将会保存在 windows 的临时目录中, 通过
php.ini 文件 upload_tmp_dir 设置,在默认情况下, 该目录是 web 服务器上的临时目录,脚本执行完
毕后,该文件将被删除.
<form enctype="multipart/form-data" action=""
method="post">
<!— 注意此处 enctype="multipart/form-data"//-->
<table width="400" height="100" border="1"
align="center" cellpadding="0" cellspacing="0" bordercol-
or="#008080" id="AutoNumber1" style="border-collapse: col-
lapse">
<tr bgcolor="#CCCCCC">
<td height="30" colspan="2" align="right"><div
align="center" class="style2"> 文件上传 </div> </td>
</tr>
<tr>
摘要:
展开>>
收起<<
PHP文件上传类的程序实现引言在Web应用程序开发中,通常文件上传是不可缺少的功能.用户可以根据各种需求将文档资料或图像视频等资料上传到Web服务器.由于上传文件的类型、大小及编码方式的不同,开发者在设计上传模块时必须考虑到各种可能出现的问题.当客户端使用HTTP协议进行文件上传,文件上传过程是比较复杂的.根据网站上传文件的各种需求,开发为实现这些功能的类可以有效地解决文件上传问题.1文件上传过程介绍与配置文件设置本文使用的开发环境为Wndows+A-pache+MySQL+PHP.PHP可以实现多种浏览器上传文件.文件上传的过程其实就是一个文件复制的过程,客户端通过HTTP协议以POST方式...
相关推荐
-
2024年党建工作要点工作计划5篇供参考
2023-12-16 999+ -
2025年专题生活会对照带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”个人对照检查发言材料4110字文稿
2024-12-21 999+ -
2025年医保局局长、科技局领导干部专题“四个带头”方面对照检查材料2篇例文(附:反面典型案例剖析情况)
2025-02-09 457 -
2025年国有企业党委书记、市总工会党组书记民主生活会“四个带头”方面对照个人检查发言材料2篇文(附:典型案例、上年度整改+个人情况)
2025-02-09 506 -
2025年市委组织部部长、教育局党委书记生活会“四个带头”个人对照检查发言材料2篇文(典型案例+个人事项)
2025-02-09 626 -
2025年市财政局党组书记、局长、市检察院党组领导班子对照“四个带头”方面生活会个人对照检视发言材料2篇文(含以案为鉴反思、以案促改促治方面)
2025-02-09 508 -
市检察院党组、市财政局领导班子2025年生活会对照“四个带头”方面检视发言材料2份文【含以违纪行为为典型案例剖析】
2025-02-09 461 -
2025年市财政局领导对照“四个带头”生活会检视发言材料2篇例文【含以违纪行为为典型案例剖析】
2025-02-09 582 -
单位领导班子2025年聚焦“四个带头”生活会对照检查材料2篇文(含:典型案例剖析反思、落实意识形态责任制)
2025-02-09 757 -
2025年镇党委副书记、市科学技术局领导班子生活会对照“四个带头”检视材料2篇文【含违纪行为典型案例分析】
2025-02-09 257
作者:闻远设计
分类:其它行业资料
价格:免费
属性:4 页
大小:13.84KB
格式:DOCX
时间:2024-03-09

