一、文件上传的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.设置上传文件的随机文件名(安全性)
<!DOCTYPE >
<html>
<head>
<meta charset="utf-8" />
<style>
input{
display: block;
}
</style>
</head>
<body>
<form action="receive.php" method="post" enctype="multipart/form-data">
<label for="uploadname">name:</label><input type="text" value="" name="uploadname" id="uploadname" />
<input type="hidden" name="MAX_VALUE_SIZE" value="1000000" />
<input type="file" name="pic" value="" />
<input type="submit" value="upload" />
</form>
</body>
</html>
<?php
/*echo "<pre>";
print_r($_POST);
print_r($_FILES);
echo "</pre>";*/
if($_FILES['pic']['error']>0){
switch($_FILES['pic']['error']){
case 1:
echo"图片大小超过upload_max_filesize<br>";
break;
case 2:
echo"图片大小超过隐藏表单的MAX_FILE_SIZE<br>";
break;
case 3:
echo"文件只被部分上传<br>";
break;
case 4:
echo"没有上传文件<br>";
break;
case 6:
echo"找不到临时文件夹<br>";
break;
case 7:
echo"写入文件失败<br>";
break;
default:
echo "发生未知错误<br>";
}
}
$extArr=explode('.',$_FILES['pic']['name']);
$ext=array_pop($extArr);
$arr=array('jpg','jpeg','png');
if(!in_array($ext,$arr)){
echo "上传类型不符<br>";
exit;
}
$maxSize=100000;
if($_FILES['pic']['size']>$maxSize){
echo "文件超过规定大小<br>";
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 "上传成功<br>";
}else{
echo "上传失败<br>";
}
?>
二、多个文件上传
1.将上传按钮的name属性变为索引数组,以方便遍历
2.在上述单个文件实例外层套一个循环即可
<?php
echo "<pre>";
print_r($_POST);
print_r($_FILES);
echo "</pre>";
$num=count($_FILES['pic']['name']);
for($i=0;$i<$num;$i++){
//判断错误
if($_FILES['pic']['error'][$i]>0){
switch($_FILES['pic']['error']){
case 1:
echo"图片大小超过upload_max_filesize<br>";
break;
case 2:
echo"图片大小超过隐藏表单的MAX_FILE_SIZE<br>";
break;
case 3:
echo"文件只被部分上传<br>";
break;
case 4:
echo"没有上传文件<br>";
break;
case 6:
echo"找不到临时文件夹<br>";
break;
case 7:
echo"写入文件失败<br>";
break;
default:
echo "发生未知错误<br>";
}
continue;
}
//判断类型
$extArr=explode('.',$_FILES['pic']['name'][$i]);
$ext=array_pop($extArr);
$arr=array('jpg','jpeg','png');
if(!in_array($ext,$arr)){
echo "上传类型不符<br>";
continue;
}
//判断大小
$maxSize=1000000;
if($_FILES['pic']['size'][$i]>$maxSize){
echo "文件超过规定大小<br>";
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]}成功<br>";
}else{
echo "上传失败<br>";
}
}
?>
三、文件上传类
1.参考细说PHP文件上传类,进行使用
四、文件下载
1.a标签href属性设置为下载地址
2.http头信息改为附件
<?php
$filename='view.html';
header("Content-Type:text/html");
header("Content-Disposition:attachment;filename:{$filename}");
header("Content-Length:".filesize($filename));
readfile($filename);
?>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。