2007/01/24 11:07
文章作者:9Enjoy 转载请注明原文链接。
自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这些数组将包含所有关于您上传的文件的信息,其中,我们推荐您使用 $_FILES。如果 PHP 的设置选项 register_globals 为 on,则相关的变量名将也会存在。从 PHP 4.2.0 版本开始,register_globals 的默认值被设为 off。
我们假设文件上传字段的名称为 userfile。名称可随意命名。
$_FILES['userfile']['name']
客户端机器文件的原名称。
$_FILES['userfile']['type']
文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
$_FILES['userfile']['size']
已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name']
文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']
和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。
处理函数:
move_uploaded_file()
(PHP 4 >= 4.0.3, PHP 5)
move_uploaded_file -- 将上传的文件移动到新位置
说明
bool move_uploaded_file ( string filename, string destination )
本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。
如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。
如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。
如果目标文件已经存在,将会被覆盖。
示例:
if(move_uploaded_file($_FILES["magfile"]["tmp_name"], $uploaddir))
{
echo "Update OK!";
}
也可用copy(PHP 3, PHP 4, PHP 5)
copy -- 拷贝文件
bool copy ( string source, string dest )
将文件从 source 拷贝到 dest。如果成功则返回 TRUE,失败则返回 FALSE。
提交页:
<form action="." method="post" enctype="multipart/form-data" name="UL">
<!--这里的‘enctype="multipart/form-data" ’是必须的-->
<input type="file" name="picurl" size="15"
accept="image/x-png,image/gif,image/jpeg">
<input type="submit" name="upload" value="上传">
</form>
处理页:
if($_FILES['picurl']['size'] > 0){
if(move_uploaded_file ($_FILES['picurl']['tmp_name'], $_FILES['picurl']['name'])){
echo "图片上传成功";
}
}
其它非File类型的表单,可照样用$_POST['name']来接收。
相比asp上传需要用到第三方类来说,php的上传显的简单的多。

一些兼容各浏览器的方法
apache下设置缓存

