PHP新手上路(八) 文件上传
发布:smiling 来源: php粉丝网 添加日期:2013-11-17 浏览: 评论:0
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服务哦。
在HP中,文件上载还有几点是值得注意的:
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>
Tags:php新手入门 php新手上路
分享到:
收藏
相关文章
- ·PHP新手上路(一)(2013-11-17)
- ·PHP新手上路(二)(2013-11-17)
- ·PHP新手上路(三)(2013-11-17)
- ·PHP新手上路(四)(2013-11-17)
- ·PHP新手上路(五)(2013-11-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)
- 程序员:能花钱的,就不要花时间(2)
- php中超级简单文件上传代码(2)
- php验证码生成与应用实例(2)
- PHP中校验ISBN码的函数详解(2)
- php 面向对象编程之构造方法与析构方法(2)
- 程序员的四种类型(2)
- PHP自学要多久?(2)
- linux系统systemtap监控应用问题分析(2)
- 帝国CMS内容点击无限加载思路分享(2)
- PHPCMS模块的安装和卸载(2)