| 添加到收藏夹 | 返回目录页 | 上一篇:PHP新手上路(九) |
PHP新手上路(八)
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>
下一篇:PHP新手上路(七)
↓相关文章:
- · PHP新手上路(七)
- · PHP新手上路(五)
- · PHP新手上路(三)
- · PHP新手上路(一)
- · php和asp对象的等价关系
- · PHP编程网上资源导航
- · 一篇入门的 Class 文章
- · 做了个目录显示程序
- · 给看看这个问题
- · 版mysql+apache+php in lux安装指南 写的好累得说。。
- · PHP完全手册
- · Web服务器的趋势
- · php在母语方面的支持(转载)
- · 中文注释的php.ini ( darkwings翻译 )
- · PHP3中文文档(续1)
- · PHP3中文文档(续3)
- · PHP3中文文档(续5)
- · php安全之狗尾续貂(转)
- · 如何对PHP程序中的常见漏洞进行攻击(上)
- · MySQL 3.23.40 又发布了
- · PHP 4.06 正式版发布,修正了许多BUG,更加稳定
- · 最近忙于FTP,好站多多!有好多好东东哦!不敢独享!
- · PHP4的核心:Zend (转载自奥索)
- · 三种Web开发主流技术的评价之ASP
- · 三种Web开发主流技术的评价之PHP
- · 在PHP中使用灵巧的体系结构(摘)
- · 聊天室技术 - 密谈的实现
- · 规范1
- · phpMyAdmin又出了新版本phpMyAdmin-2.2.3-rc1
- · PHP 4.1.0 出版公告(中英对照版)补 1
- · PHP的面向对象编程
- · php重大发现!:)
- · PHP函数索引(4)
- · php函数索引(1)
- · 是你期待的吗? 从Zend Engine 2.0的设计蓝图(草稿)看PHP的将来
- · Mysql权限系统工作原理
- · 加固PHP环境(转)
- · 先做点好事,转点东东来,用PHP和MySQL构建一个数据库驱动的网站(-)
- · 用PHP和MySQL构建一个数据库驱动的网站(三)
- · 用PHP和MySQL构建一个数据库驱动的网站(四)
- · 用PHP和MySQL构建一个数据库驱动的网站(7)
- · 用PHP和MySQL构建一个数据库驱动的网站(十)
- · php中echo <<< 的应用
- · 正则表达式语法(转)
- · PHP的面向对象编程:开发大型PHP项目的方法(三)(转载)

