首页
工具箱
Search
1
Vue vben admin 2.0的封装部分坑点
1,546 阅读
2
python生成剪映草稿解析
1,405 阅读
3
百度地图坐标系对腾讯地图坐标系转换
1,250 阅读
4
VUE中使用mathjs的方法
1,160 阅读
5
解决Ant Design Vue的Select搜索指定字段的问题
1,081 阅读
技术宅的演示性文稿
技术宅的吐槽文档
一个的舞台
唱唱反调
老文章归档
光年计划
登录
Search
标签搜索
老文章
CS
长春
大学
程序员
vue
酷游CS俱乐部
dedecms
织梦
php
vant
小程序
军训
缘
ie6
google
大连
2012
js
ecshop
茶树虾
累计撰写
306
篇文章
累计收到
125
条评论
首页
栏目
技术宅的演示性文稿
技术宅的吐槽文档
一个的舞台
唱唱反调
老文章归档
光年计划
页面
工具箱
搜索到
1
篇与
likeadmin
的结果
2024-02-05
likeadmin增加文件上传类型
likeadmin我发现是一个非常好用,并且能快速上手的整套后台程序。它使用了thinkphp6+vue的架构,而且还可以使用后台的代码生成工具,快速的创建后台管理表单,大大节省了时间。在使用这个后台框架的时候,里面自带了一个“素材中心”。但是这个“素材中心”它限制了上传的类型,只能上传图片和视频两种类型。但是如果我们需要上传其它文件,并且也想通过这个“素材中心”来进行管理的话,我们就需要去改动代码了。主要改动的PHP文件,涉及3个文件,分别是以下4个:config/project.phpapp/common/service/UploadService.phpapp/common/service/storage/engine/Server.phpapp/adminapi/controller/UploadController.php首先,我们先找到project.php文件,我们可以找到'file_files' => [ 'xls', 'xlsx' ],然后在后面加上// 文件上传限制 (文件) 'file_files' => [ 'xls', 'xlsx' ],然后找到第二个文件UploadService.php我们可以找到最后的“视频上传”方法,然后在后面加上文件上传的方法public static function files($cid, int $sourceId = 0, int $source = FileEnum::SOURCE_ADMIN, string $saveDir = 'uploads/files') { try { $config = [ 'default' => ConfigService::get('storage', 'default', 'local'), 'engine' => ConfigService::get('storage') ?? ['local'=>[]], ]; // // 2、执行文件上传 $StorageDriver = new StorageDriver($config); $StorageDriver->setUploadFile('file'); $fileName = $StorageDriver->getFileName(); $fileInfo = $StorageDriver->getFileInfo(); // 校验上传文件后缀 if (!in_array(strtolower($fileInfo['ext']), config('project.file_files'))) { throw new Exception("文件不允许上传". $fileInfo['ext'] . "文件"); } // 上传文件 $saveDir = $saveDir . '/' . date('Ymd'); if (!$StorageDriver->upload($saveDir)) { throw new Exception($StorageDriver->getError()); } // 3、处理文件名称 if (strlen($fileInfo['name']) > 128) { $name = substr($fileInfo['name'], 0, 123); $nameEnd = substr($fileInfo['name'], strlen($fileInfo['name'])-5, strlen($fileInfo['name'])); $fileInfo['name'] = $name . $nameEnd; } // 4、写入数据库中 $file = File::create([ 'cid' => $cid, 'type' => FileEnum::FILE_TYPE, 'name' => $fileInfo['name'], 'uri' => $saveDir . '/' . str_replace("\\","/", $fileName), 'source' => $source, 'source_id' => $sourceId, 'create_time' => time(), ]); // 5、返回结果 return [ 'id' => $file['id'], 'cid' => $file['cid'], 'type' => $file['type'], 'name' => $file['name'], 'uri' => FileService::getFileUrl($file['uri']), 'url' => $file['uri'] ]; } catch (Exception $e) { throw new Exception($e->getMessage()); } }添加好了以后,找到最后一个文件Server.php在大约45行的样子,找到 $limit = array_merge(config('project.file_image'), config('project.file_video'));这行代码,然后修改成$limit = array_merge(config('project.file_image'), config('project.file_video'), config('project.file_files'));文件UploadController.php在64行位置public function video()方法的后面,添加/** * @notes 上传文件 * @return Json * @author teaxia * @date 2024/01/11 0:15 */ public function files() { try { $cid = $this->request->post('cid', 0); $result = UploadService::files($cid); return $this->success('上传成功', $result); } catch (Exception $e) { return $this->fail($e->getMessage()); } }至此,php部分修改完成。前端部分呢,找到src/views/material/index.vue文件在tabsMap里面添加{ type: 'files', name: '文件' }src/components/material/index.vue文件找到56行<upload v-if="type == 'video'" class="mr-3" :data="{ cid: cateId }" :type="type" :show-progress="true" @change="refresh"> <el-button type="primary">本地上传</el-button> </upload>在后面添加<upload v-if="type == 'files'" class="mr-3" :data="{ cid: cateId }" :type="type" :show-progress="true" @change="refresh"> <el-button type="primary">本地上传</el-button> </upload>找到276行左右case 'video': return 20在后面添加case 'files': return 30
2024年02月05日
147 阅读
0 评论
0 点赞