摘要:文件的上传//通过判断上传文件,将文件移动至目标文件夹,并为此文件进行唯一命名,无论上传成功和失败均返回相应的信息 function dn_ul_file($uploadinfo,$upload_maxsize=10000,$upload_tpye=['txt','png','jpg'],$up_load='./uplo
文件的上传
//通过判断上传文件,将文件移动至目标文件夹,并为此文件进行唯一命名,无论上传成功和失败均返回相应的信息
function dn_ul_file($uploadinfo,$upload_maxsize=10000,$upload_tpye=['txt','png','jpg'],$up_load='./upload'){
//上传 判断上传文件的大小,类型是否
if ($uploadinfo['error']==0){
$uploadinfo_type=strtolower(pathinfo($uploadinfo['name'],PATHINFO_EXTENSION));
if (!in_array($uploadinfo_type,$upload_tpye)){
return'上传类型为非法文件类型';
}
if ($uploadinfo['size']>$upload_maxsize){
return'上传文件超过文件最大上传量';
}
//判断是通过http中的post方法进行上传
if (!is_uploaded_file($uploadinfo['tmp_name'])){
return'非法上传操作';
}
//判断上传文件夹是否存在,如果不存在则创建
if (!is_dir($up_load)){
mkdir($up_load,0777,true);
}
//将上传文件命名为唯一的命名,uniqid()生产唯一的id,microtime()返回当前unix时间蹉中的微秒数
$uniname=md5(uniqid(microtime(true),true)).".".$uploadinfo['name'];
//拼接文件及文件名
$dest=$up_load."/".$uniname;
//将文件移动至目标文件夹
if (move_uploaded_file($uploadinfo['tmp_name'],$dest)){
return'文件上传成功';
}else {return'文件上传失败';}
} else {
switch( $uploadinfo['error']){
case 1:$res='上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。';
break;
case 2:$res='上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
break;
case 3:$res='文件只有部分被上传';
break;
case 4:$res='没有文件被上传';
break;
case 6:
case 7:$res='系统错误';
break;
}
}
return $res;
}前端页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上传</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="MyFile"><!--上传选择框--> <input type="submit" name="上传"><!--上传按钮--> </form> </body> </html>
调用
include 'demo5.php';//引入上传的方法库 $fileinfo=$_FILES['MyFile'];//将上数组赋值给$fileinfo echo dn_ul_file($fileinfo);//调用上传方法
文件的下载
function down_file($filename){
//告诉浏览器返回文件的大小
header('Accept-Length'.filesize($filename));
//告诉浏览器文件作为附件处理,并告诉浏览器下载完毕的文件名
header('Content-Disposition:attachment;filename='.basename($filename));
//输出文件
readfile($filename);
}
down_file('www1.zip');
批改老师:查无此人批改时间:2019-06-05 09:44:33
老师总结:完成的不错。封装方法,多看看别人写好的,把好的拿过来。继续加油