我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_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。
提交页:
代码如下 | 复制代码 |
处理页:
代码如下 | 复制代码 |
if($_FILES['picurl']['size'] > 0){ |
其它非File类型的表单,可照样用$_POST['name']来接收。
php上传图片简单实现
代码如下 | 复制代码 |
if($_GET['action'] == 'upfile') { $target_path = 'temp_'.$_FILES['photo']['name']; echo '上传的临时文件:' .$_FILES['photo']['tmp_name'] . ' '; echo '上传的目标文件:' .$target_path . ' '; echo $_SERVER["SCRIPT_FILENAME"] . ' '; echo $_SERVER["OS"] . ' '; //测试函数: move_uploaded_file //也可以用函数:copy move_uploaded_file($_FILES['photo']['tmp_name'], $target_path); echo "Upload result:"; if(file_exists($target_path)) { if($_SERVER["OS"]!="Windows_NT"){ @chmod($target_path,0604); } echo 'Succeed! '; } else { echo 'Failed!'; } exit; } ?> Registration |
上面代码只适用于学习使用,如果想使用在现在的服务器上我们必须如下写法
代码如下 | 复制代码 |
/****************************************************************************** 参数说明: 使用说明: //上传文件类型列表 $max_file_size=2000000; //上传文件大小限制, 单位BYTE
if ($_SERVER['REQUEST_METHOD'] == 'POST') $file = $_FILES["upfile"]; if(!in_array($file["type"], $uptypes)) if(!file_exists($destination_folder)) $filename=$file["tmp_name"]; if(!move_uploaded_file ($filename, $destination)) $pinfo=pathinfo($destination); if($watermark==1) imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]); switch($watertype) switch ($iinfo[2]) //覆盖原上传文件 if($imgpreview==1) |