摘要:<?php /** * Created by PhpStorm. * Date: 2019/4/5 * Time: 15:31 */ /** * 单文件上传 * @param $fileInfo &
<?php
/**
* Created by PhpStorm.
* Date: 2019/4/5
* Time: 15:31
*/
/**
* 单文件上传
* @param $fileInfo // 上传文件信息
* @param string $upPath // 目标目录
* @param array $upExt // 上传文件类型
* @param int $maxSize // 上传最大限制
* @return string 提示信息
*/
function upload_file($fileInfo,$upPath='./upload',$upExt = ['jpg','pan','jpeg','txt','xls'],$maxSize = 1000000)
{
// 判断文件错误类型是否为0
if($fileInfo['error'] === 0) {
// 获取文件后缀
$ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
if (!in_array($ext, $upExt)) {
return '非法文件类型';
}
// 判断文件是否超出了限制
if ($fileInfo['size'] > $maxSize) {
return '上传文件超出了限制';
}
// 判断文件是否被上传
if (!is_uploaded_file($fileInfo['tmp_name'])) {
return '非法上传操作';
}
// 判断上传到的目录是否存在
if (!is_dir($upPath)) {
mkdir($upPath, 0777, true);
}
// 生成唯一文件名
$uniName = substr(md5(uniqid(microtime(true), true)), 5, 10);
$destName = $upPath . '/' . $uniName . '.' . $ext;
if (!move_uploaded_file($fileInfo['tmp_name'], $destName))
{
return '文件上传失败';
}
return '文件上传成功';
} else {
switch($fileInfo['error'])
{
case 1:
$res = '文件上传超过了php.ini中upload_max_size的限制';
break;
case 2:
$res = '上传文件超过了HTML中设置的MAX_FILE_XIZE限制值';
break;
case 3:
$res = '文件只有部分被上传';
break;
case 4:
$res = '文件没有被上传';
break;
case 6:
$res = '找不到临时文件夹';
break;
case 7:
$res = '文件上传失败';
break;
}
return $res;
}
}
/**
* @param $fileName 需要下载的文件
*/
function down_file($fileName)
{
// 告诉浏览器下载文件的大小
header('Accept-Length:'.filesize($fileName));
// 告诉浏览器已附件的形式输出,并返回文件名称
header('Content-Disposition:attachment;filename='.basename($fileName));
// 文件输出
readfile($fileName);
}
?>
批改老师:西门大官人批改时间:2019-04-08 09:55:15
老师总结:文件上传的时候有个缺陷,switch中少了default,可能会引发未定义$res的错误