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&amp;&amp;mysql)三
Oct 09 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
PHP遍历二维数组的代码
Apr 22 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
php遍历数组的方法分享
Mar 22 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
php微信开发之百度天气预报
Nov 18 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
php取出数组单个值的方法
Mar 12 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
php邮件发送的两种方式
2020/04/28 PHP
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
详细探究Python中的字典容器
2015/04/14 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python实现文件内容批量追加的方法示例
2017/08/29 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
如何通过命令行进入python
2020/07/06 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
Python基于locals返回作用域字典
2020/10/17 Python
常见的软件开发流程有哪些
2015/11/14 面试题
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
大型会议接待方案
2014/03/01 职场文书
小学毕业寄语大全
2014/04/03 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
Python List remove()实例用法详解
2021/08/02 Python
排查Tomcat进程假死的问题
2022/05/06 Servers