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之第二天
Oct 09 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
php 字符串替换的方法
Jan 10 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
async和DOM Script文件加载比较
Jul 20 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 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
php动态生成JavaScript代码
2009/03/09 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
简单谈谈json跨域
2016/03/13 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
javascript自执行函数
2017/02/10 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python条件和循环的使用方法
2013/11/01 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Django框架封装外部函数示例
2019/05/28 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
Python如何将函数值赋给变量
2020/04/28 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
董事长岗位职责
2013/11/30 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
信息员培训方案
2014/06/12 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
2015暑假实习报告范文
2015/07/13 职场文书