PHP新手上路(八)


Posted in PHP onOctober 09, 2006

7. 文件上传

你可以利用PHP实现文件的上传功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上的版本。同时,因为本程序与你的PHP配置文件(PHP3为php3.ini,PHP4为php.in)设置有关。在执行该程序之前请先检查您的PHP配置文件有没有做好如下的设置:

将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,例如:upload_tmp_dir = d:upload  当然,此时你的d:upload目录必须有读写权限。

如果你在你的.php3程序里已经定义了上传的路径,此时上传文件的路径以.php3程序里定义的路径为基准。在下例中,receiver.php3文件就指定了用于存放上传文件的目录是:d:upload。

upload_max_filesize 是用来限制PHP处理的上载文件大小的最大值,以字节计算,缺省值为2097152= 2*1024*1024字节(2兆),你可以通过修改该缺省值来定义最大的上载文件大小。  

修改后不要忘了重启Apache,IIS或PWS服务哦。  


同时在PHP中,文件上载还有几点是值得注意的:
1. 在form表单中要将method属性设为post,enctype属性设为multipart/form-data;

2. 在form表单中可以加一个hidden类型的input框,其中名字为 MAX_FILE_SIZE的隐藏值域,通过设置其VALUE可以限制上载文件的大小。当然,这个值不可能超过PHP的配置文件(PHP3为php3.ini,PHP4为php.ini)中的upload_max_filesize,注意这个input框一定要放在所有file类型的input框前面,否则也是无效的哦;  

3. 在PHP程序运行完后,上传文件被放在了临时目录下。如果上传文件没有被改名或移动,那么在请求的最后该文件将自动被从临时文件夹中删除,所以我们最好立即将新的上传文件上传移到一个永久目录下或更改其文件名。  

首先我们需要一个上载文件的表单网页(upload.htm):  
<HTML>
<HEAD>
<TITLE>Upload Your File</TITLE>
</HEAD>
<BODY>
<FORM ACTION="receiver.php3"
ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="HIDDEN"
NAME="MAX_FILE_SIZE" VALUE="2000000">
<INPUT TYPE="FILE"
NAME="uploadfile" SIZE="24" MAXLENGTH="80">
<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload File!"
NAME="sendit">
<INPUT TYPE="SUBMIT" VALUE="Cancel"
NAME="cancelit"><BR>
</FORM>
</BODY>
</HTML>

处理上载文件的PHP文件(receiver.php3)
<?
function do_upload ()
{
global $uploadfile, $uploadfile_size;
global $local_file, $error_msg;
if ( $uploadfile == "none" )
{
$error_msg = "对不起,你没有选定任何文件上传!";
return;
}
if ( $uploadfile_size > 2000000 )
{
$error_msg = "对不起,你要上传的文件太大了!";
return;
}
$the_time = time ();

// 在这里指定你用来存放上传文件的目录,你需要对以下目录有写权限
// 同时,我们也可以给上传文件指定另外的目录,如:$upload_dir = "/local/uploads";  

$upload_dir = "d:/upload";
$local_file = "$upload_dir/$the_time";
if ( file_exists ( '$local_file' ) )
{
$seq = 1;
while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; }
$local_file = "$upload_dir/$the_time$seq";
};
rename ( $uploadfile, $local_file );
display_page ();
}
function display_page ()
{
// 这里是你的页面内容
}
?>
<HTML>
<HEAD>
<TITLE>php3 Receiving Script</TITLE>
</HEAD>
<BODY>
<?
if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; }
if ( $sendit )
{
do_upload ();
echo "文件上载成功!";
}
elseif ( $cancelit )
{
header ( "Location: $some_other_script" );
echo "文件上载失败!";
exit;
}
else
{
some_other_func ();
}
?>
</BODY>
</HTML> v   

PHP 相关文章推荐
php完全过滤HTML,JS,CSS等标签
Jan 16 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
php+redis实现消息队列功能示例
Sep 19 PHP
网络资源
Oct 09 #PHP
PHP中的正规表达式(一)
Oct 09 #PHP
PHP中的正规表达式(二)
Oct 09 #PHP
smtp邮件发送一例
Oct 09 #PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 #PHP
PHP+javascript液晶时钟
Oct 09 #PHP
一个分页的论坛
Oct 09 #PHP
You might like
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
js select常用操作控制代码
2010/03/16 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
vue项目中api接口管理总结
2018/04/20 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
python 日期操作类代码
2018/05/05 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
中科软笔试题和面试题
2014/10/07 面试题
销售文员岗位职责
2013/11/29 职场文书
女娲补天教学反思
2014/02/05 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
小学生常见病防治方案
2014/06/06 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
入党团支部推荐意见
2015/06/02 职场文书
太行山上观后感
2015/06/05 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL