1.单文件上传
1.单文件上传
#$fileInfo = $_FILES['myFile']; #$allowExt = array('jpeg', 'jpg', 'png', 'gif'); #$allowExt 为支持的上传的文件类型,不传为所有类型 #$uploadPath 文件夹位置 function up($fileInfo,$allowExt,$uploadPath) { #获取传过来的信息 //var_dump($_FILES); // $fileInfo = $_FILES['myFile']; $filename = $fileInfo['name']; $type = $fileInfo['type']; $tmp_name = $fileInfo['tmp_name']; $error = $fileInfo['error']; $size = $fileInfo['size']; if ($error == 0 || $error == 'UPLOAD_ERR_OK') { #更改编码,使其支持中文 $filename = iconv("UTF-8", "gb2312", $filename); $tmp_name = iconv("UTF-8", "gb2312", $tmp_name); #限制文件类型 #获取文件类型(文件名后缀) $allowExt = $allowExt?$allowExt:''; // $allowExt = array('jpeg', 'jpg', 'png', 'gif'); $ext = pathinfo($filename, PATHINFO_EXTENSION); if($allowExt) { if (!in_array($ext, $allowExt)) { exit('非法文件类型'); } } #检测文件是否是通过HTTP POST方式上传上来的 if (!is_uploaded_file($tmp_name)) { exit('文件不是通过post方式上传上来的'); } #给文件重命名 // $uploadPath = 'file'; #文件夹位置 #如果文件夹不存在,则创建一个 if (!file_exists($uploadPath)) { mkdir($uploadPath, 0777, true); chmod($uploadPath, 0777); } $uniName = md5(uniqid(microtime(true), true)) . '.' . $ext; $tmpExcel = $uploadPath . '/' . $uniName; #删除原文件 // $tmpExcel = "file/".$filename; if (file_exists($tmpExcel)) { //删除 unlink($tmpExcel); } #保存文件,1.移动 2.copy #移动临时文件到指定位置,注意只能操作临时文件,移动成功返回true,否则false if (move_uploaded_file($tmp_name, $tmpExcel)) { echo "文件保存成功"; } #方法2,copy文件 //if(copy($tmp_name,$tmpExcel)){ // echo "文件保存成功"; //} } else { switch ($error) { case 1: echo "文件过大"; break; case 2: echo "上传文件大小超过html表单中MAX_FILE_SIZE选项指定的值"; break; case 3: echo "文件只有部分被上传 "; break; case 4: echo "没有选择文件"; break; case 6: echo "找不到临时文件夹"; break; case 7: echo "文件写入失败 "; break; case 8: echo "文件上传被php拓展程序中断 "; break; } } }
注意:1.要求前台 必须带标签 enctype="multipart/form-data" 若前台采用的是upload插件,那么让其不要带header
2.一般前台会发送两个请求,先发一个option请求,若其状态不是200,则需要调整ngnix
3.若你接收到的上传信息为空,那么检查你的php配置,file_uploads = on 是否打开
2.多文件上传
Foreach传过来的文件,将每个文件单独上传,但是要注意,当文件上传失败的时候,不要终止程序。
2.文件下载
$fileName = 文件名;
$tmpExcel = "/var/www/html/tp5/File/".$fileName;(前为文件夹名)
//检查文件是否存在
if (! file_exists ( $tmpExcel )) {
echo "文件找不到";
exit;
} else {
$fileSize = filesize($tmpExcel);
Header ( "Content-type: application/octet-stream" );
Header ( "Accept-Ranges: bytes" );
Header ( "Accept-Length: " . $fileSize );
Header ( "Content-Disposition: attachment; filename=" . $fileName );
readfile($tmpExcel);
}
注意:1.下载功能已做好,直接让前端把你的接口包裹在代码里,而不是调用你的接口。
2.若无法下载,则在后面加个exit
3.预览
<?php
// $filename = 'test.pdf';#文件名
$path = "/var/www/html/tp5/File/";#文件路径
if(!file_exists($path . $filename)) {
echo '文件不存在';
exit;
}
// $outFileName = iconv("UTF-8", "GB2312", $filename);//解决文件名乱码
header('Content-type:application/pdf');
// 文件流输出到浏览器
readfile ($path . $filename);
exit;
}
注意:1.预览功能已做好,直接让前端把你的接口包裹在代码里,而不是调用你的接口。
2.注意查看你的头文件Content-Type是不是pdf,若不是则有问题
4.文件删除
<?php
$tmpExcel = "/var/www/html/tp5/File/".$filename;#文件位置
if (file_exists($tmpExcel)) {
//删除
unlink($tmpExcel);
echo '文件删除成功';
exit;
}
缺点: 目前只支持pdf在线预览,若有人知道如何实现word及excel在线预览。联系我哦