一、文件上传的html与PHP注意事项
1.form要设定enctype属性,method设置为post。enctype设置为multipart/form-data后,图片上传信息会被列入$_FILES超全局数组,而非$_POST,从而达到真正的上传目的
2.设定隐藏input:表示最大上传空间
3.PHP配置文件的设置:
二、单个文件上传
1.复制或移动上传文件:move_uploaded_file()
bool move_uploaded_file ( string $filename , string $destination )
2.判断错误
3.判断类型,通过扩展名数组来判断
4.判断大小
5.设置上传文件的随机文件名(安全性)
input{
display: block;
}
name:
/*echo "
";
print_r($_POST);
print_r($_FILES);
echo "
";*/if($_FILES['pic']['error']>0){
switch($_FILES['pic']['error']){
case 1:
echo"图片大小超过upload_max_filesize
";
break;
case 2:
echo"图片大小超过隐藏表单的MAX_FILE_SIZE
";
break;
case 3:
echo"文件只被部分上传
";
break;
case 4:
echo"没有上传文件
";
break;
case 6:
echo"找不到临时文件夹
";
break;
case 7:
echo"写入文件失败
";
break;
default:
echo "发生未知错误
";
}
}
$extArr=explode('.',$_FILES['pic']['name']);
$ext=array_pop($extArr);
$arr=array('jpg','jpeg','png');
if(!in_array($ext,$arr)){
echo "上传类型不符
";
exit;
}
$maxSize=100000;
if($_FILES['pic']['size']>$maxSize){
echo "文件超过规定大小
";
exit;
}
Date_default_timezone_set('PRC');
$proPath=$_FILES['pic']['tmp_name'];
$newPath='./'.date('ymdhis').rand(100,999).'.'.$ext;
if(move_uploaded_file($proPath,$newPath)){
echo "上传成功
";
}else{
echo "上传失败
";
}
?>
二、多个文件上传
1.将上传按钮的name属性变为索引数组,以方便遍历
2.在上述单个文件实例外层套一个循环即可
echo "
";
print_r($_POST);
print_r($_FILES);
echo "
";$num=count($_FILES['pic']['name']);
for($i=0;$i
//判断错误
if($_FILES['pic']['error'][$i]>0){
switch($_FILES['pic']['error']){
case 1:
echo"图片大小超过upload_max_filesize
";
break;
case 2:
echo"图片大小超过隐藏表单的MAX_FILE_SIZE
";
break;
case 3:
echo"文件只被部分上传
";
break;
case 4:
echo"没有上传文件
";
break;
case 6:
echo"找不到临时文件夹
";
break;
case 7:
echo"写入文件失败
";
break;
default:
echo "发生未知错误
";
}
continue;
}
//判断类型
$extArr=explode('.',$_FILES['pic']['name'][$i]);
$ext=array_pop($extArr);
$arr=array('jpg','jpeg','png');
if(!in_array($ext,$arr)){
echo "上传类型不符
";
continue;
}
//判断大小
$maxSize=1000000;
if($_FILES['pic']['size'][$i]>$maxSize){
echo "文件超过规定大小
";
continue;
}
//设置随机文件名进行上传操作
Date_default_timezone_set('PRC');
$proPath=$_FILES['pic']['tmp_name'][$i];
$newPath='./'.date('ymdhis').rand(100,999).'.'.$ext;
if(move_uploaded_file($proPath,$newPath)){
echo "上传{$_FILES['pic']['name'][$i]}成功
";
}else{
echo "上传失败
";
}
}
?>
三、文件上传类
1.参考细说PHP文件上传类,进行使用
四、文件下载
1.a标签href属性设置为下载地址
2.http头信息改为附件
$filename='view.html';
header("Content-Type:text/html");
header("Content-Disposition:attachment;filename:{$filename}");
header("Content-Length:".filesize($filename));
readfile($filename);
?>