### 封装上传方法
> 一、打开项目在config文件夹下创建upload.php配置文件用来管理文件上传的后缀和大小
```php
<?php
return [
//定义允许上传文件后缀的数组
'suffix_arr' => [
//允许图片上传的后缀
'image' => 'jpg,jpeg,png,gif',
//允许上传文件的后缀
'file' => 'zip,gz,doc,txt,pdf,xls',
//...
],
//定义允许上传文件大小的数组
'size_arr' => [
//允许图片上传的大小
'image' => 10,
//允许文件上传的大小
'file' => 50
],
];
```
> 二、修改config\filesystem.php配置文件配置上传根目录及上传规则
```php
<?php
return [
// 默认磁盘
'default' => 'local',
// 磁盘列表
'disks' => [
'local' => [
'type' => 'local',
'root' => app()->getRuntimePath() . 'storage',
],
'public' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public/storage',
// 磁盘路径对应的外部URL路径
'url' => '/storage',
// 可见性
'visibility' => 'public',
],
// 更多的磁盘配置信息
'excel' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public',
// 磁盘路径对应的外部URL路径
'url' => '/excel',
// 可见性
'visibility' => 'public',
],
],
];
```
> 在app\controller目录下创建Upload.php类并编写upload()文件上传方法,如果是这样加个post请求判断
>
> 放在common方法里的话,可以直接调用
```php
/**
* 上传方法
* @param $file
* @param string $name
* @param string $type
* @return bool|\think\response\Json
*
* User: mi
* Date: 2020-09-14
*/
public function upload($file, $name = 'file', $type = 'file')
{
//接收文件上传类型
// $type = request()->param('type', '', 'trim');
// $name = request()->param('name', '', 'trim');
//
// //获取表单上传文件
// $file = request()->file('file');
//组装文件保存目录
$upload_dir = '/' . $type . '/' . $name;
try {
//从config/upload.php配置文件中读取允许上传的文件后缀和大小
$suffix_config = config('upload.suffix_arr');
$size_config = config('upload.size_arr');
if (empty($size_config[$type]) || empty($size_config[$type])) {
return false;
} else {
$suffix = $suffix_config[$type];
$size = $size_config[$type];
}
//验证器验证上传的文件
validate(['file' => [
//限制文件大小
'fileSize' => $size * 1024 * 1024,
//限制文件后缀
'fileExt' => $suffix
]], [
'file.fileSize' => '上传的文件大小不能超过' . $size . 'M',
'file.fileExt' => '请上传后缀为:' . $suffix . '的文件'
])->check(['file' => $file]);
//上传文件到本地服务器
$filename = \think\facade\Filesystem::disk('public')->putFile($upload_dir, $file);
if ($filename) {
$src = '/storage/' . $filename;
// return json(['code' => 1, 'result' => $src]);
return $src;
} else {
return json(['code' => 0, 'msg' => '上传失败']);
}
} catch (ValidateException $e) {
return json(['code' => 0, 'msg' => $e->getMessage()]);
}
}
```
- 介绍
- PHP
- 过滤
- 访问第三方
- 封装概率
- 将反斜杠转成正斜杠
- 超长数字运算
- php高级
- 设计模式
- TP笔记
- tp5
- TP
- 时间操作
- 模型
- Base函数
- 字符串数组操作
- 数据库
- 查询
- 其它操作
- 文件类操作
- 上传
- 导出
- 压缩
- tp6
- 封装上传方法
- 浏览器下载文件
- deepin踩坑
- mysql安装相关
- layui
- layui表格操作
- layui表格点击图片放大
- layui点击数据表格添加或删除一行
- layui表格操作
- lemocms
- html相关
- 按钮
- js
- crud的js函数
- base相关函数
- layui关闭弹窗层并刷新父窗口
- 表单操作
- h5+js
- layui图片上传和预览
- 多图上传
- 自定义
- vscode
- vs更换电脑时,同步配置
- 前端
- vue-admin后台
- 相关操作
- js相关
- js播报语音
- js监听页面扫码枪
- fastadmin
- fast的js
- Typora
- 数据库
- MySQL