bool is_uploaded_file(string name);
//用于判断指定的文件是否通过HTTPPOST上传的。filename必须类似于$_FILES[‘filename'][‘temp_name']的变量,不可以使用从客户端上传的文件名$_FILES[‘filename'][‘name']。
move_upload_file(string filename,stringdestination);//该函数用于将文件上传到服务器中指定的位置。如果成功,则返回true,否则返回false。filename指定上传文件的临时文件名,即$_FILES['tmp_name'],参数destination指定文件上传后保存的新路径和名称。如果参数不是合法的上传文件,不会出现任何操作,该函数将返回false。如果是合法的上传操作,但是由于某些原因无法移动,则不会出现任何操作,返回false的同时将会发出一条警告。
php中应用move_uploaded_file()函数实现文件上传。但在执行之前,
为了防止潜在的攻击对原本不能通过脚本交互的文件进行非法管理,可以先应用is_uploaded_file()函数判断指定的文件是否通过HTTPPOST上传的
,如果是则返回true。通过该函数,可以确保恶意的用户无法欺骗脚本去访问不能访问的文件。
函数名
作用
例题:单文件上传
定义文件上传处理页面upfile.php
例题:多文件上传
定义文件上传处理页面upfile.php
定义文件上传处理页面upfile.php
//单个文件上传练习
<?php
if( !empty($_FILES[ 'up_picture' ][ 'name' ])){
if( $_FILES['up_picture']['error'] > 0){
echo "上传错误!";
switch($_FILES['up_picture']['error']){
case 1:
echo "上传文件超出配置文件规定值";
break;
case 2:
echo "上传文件超出表单规定值";
break;
case 3:
echo "上传文件不全";
break;
case 4:
echo "没有上传文件";
break;
}
}else{
if( ! is_dir('./upfile/') ) mkdir('./upfile/');
$path='./upfile/'.time().$_FILES['up_picture' ][ 'name' ]; //定义上传文件路径和名称,也可以自定义名称
if( is_uploaded_filed( $_FILES['up_picture' ][ 'tmp_name' ] )){
if(!move_uploaded_file( $_FILES['up_picture' ][ 'tmp_name' ] ,$path )){
echo "上传失败!";
}else{
echo "文件".time().$_FILES['up_picture' ][ 'name' ] ."上传成功,大小为:".$_FILES['up_picture' ][ 'size' ] ;
}
}else{
echo "上传文件".$_FILES['up_picture' ][ 'name' ]."不合法";
}
}
}
//其他限制可自由添加
$allowtype=array("jpg","gif","png"); //定义可以被上传的文件类型
$upfilenameandtype=explode(".",$_FILES["pic"]["name"]);
$type=count($upfilenameandtype);
$upfiletype=strtolower($upfilenameandtype[$type-1]);
if(!in_array($upfiletype,$allowtype)){
echo "您选择的文件类型不正确,请选择jpg、gif、png的文件类型";
exit;
}
$filesize=1000000; //定义上传文件的大小
if($_FILES["pic"]["size"] > $filesize){
echo "你上传的文件超过了限制,只能上传不超过".$filesize."Byte的文件";
exit;
}
$uploaddir=$_POST["uploaddir"]; //接受上传的文件目录地址
$newname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100,999).".".$upfiletype; //将 新上传的文件进行重命名
?>
//文件上传界面upload.html:
<html>
<head>
<title> 文件上传练习 </title>
</head>
<body>
<center>文件上传练习</center>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
请设置上传文件目录<input type="text" name="uploaddir" value="./upload/"><br />
请选择上传文件:<input type="file" name="pic" />
<input type="submit" name="sub" value="提交" />
</form>
</body>
</html>
例题:多文件上传
定义文件上传处理页面upfile.php
<?php
//文件上传练习
$i=0;
foreach($_FILES["pic"]["error"] as $error){
$i++;
if($error!=0){ //判断是否上传出错,如果出错退出程序
switch($error){
case 1:
echo "第".$i."个文件超过PHP.INI限制".'<br />';
break;
case 2:
echo "第".$i."个文件超过HTML表单限制".'<br />';
break;
case 3:
echo "第".$i."个文件只有部分被上传".'<br />';
break;
case 4:
echo "第".$i."个文件没有被上传".'<br />';
break;
default:
echo "未知错误!".'<br />';
}
exit;
}
}
$j=0;
$allowtype=array("jpg","gif","png");
foreach($_FILES["pic"]["name"] as $type){
$j++;
$upfilenameandfile=explode(".",$type);
$upfiletype=$upfilenameandfile[count($upfilenameandfile)-1];
$upfiletype=strtolower($upfiletype);
if(!in_array($upfiletype,$allowtype)){
echo "第".$j."个文件不是是被上传的文件类型";
exit;
}
}
$allowsize=1000000;
$h=0;
foreach($_FILES["pic"]["size"] as $size){
$h++;
if($size>$allowsize){
echo "你上传的第".$h."个文件超过大小限制";
exit;
}
}
$upfiledir=$_POST["uploaddir"];
if(!file_exists($upfiledir)){
mkdir($upfiledir);
}
$k=0;
foreach($_FILES["pic"]["tmp_name"] as $name){
$k++;
$newname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100,999).".".$upfiletype;
if(!is_uploaded_file($name)){
echo "非法上传!<br />";
exit;
}else{
move_uploaded_file($name,$upfiledir.$newname);
echo "恭喜你,第".$k."个文件上传成功!<br />";
}
}
?>
//文件上传界面upload.html:
<html>
<head>
<title> 多文件上传练习 </title>
</head>
<body>
<center>多文件上传练习</center>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
请设置上传文件目录<input type="text" name="uploaddir" value="./upload/"><br />
请选择上传文件:<input type="file" name="pic[]" /><br />
请选择上传文件:<input type="file" name="pic[]" /><br />
请选择上传文件:<input type="file" name="pic[]" /><br />
请选择上传文件:<input type="file" name="pic[]" /><br />
<input type="submit" name="sub" value="提交" />
</form>
</body>
</html>