当前位置:网站首页>fastadmin图片上传方法改造
fastadmin图片上传方法改造
2022-08-09 08:46:00 【tjg888888】
文件路径:application/admin/controller/ajax.php
方法:
upload
改造为:
public function upload() { $fileNow = request()->file('file')->getInfo(); $name = $fileNow['name']; $format = strrchr($name, '.');//截取文件后缀名如 (.jpg) $oss = new OssClient( env('oss.accessKeyId'), env('oss.accessSecret'), env('oss.endpoint') ); $fileName = "backend/upload/".date('Ymd'.time()).sha1(date('YmdHis', time()) . uniqid()) . $format; $result = $oss->uploadFile(env('oss.publicbucket'), $fileName, $fileNow['tmp_name']); $ossurl = $result["info"]["url"]; $ossurl = str_replace('http','https',$ossurl); Config::set('default_return_type', 'json'); $file = $this->request->file('file'); if (empty($file)) { $this->error(__('No file upload or server upload limit exceeded')); } //判断是否已经存在附件 $sha1 = $file->hash(); $extparam = $this->request->post(); $upload = Config::get('upload'); preg_match('/(\d+)(\w+)/', $upload['maxsize'], $matches); $type = 0; $typeDict = ['b' => 0, 'k' => 1, 'kb' => 1, 'm' => 2, 'mb' => 2, 'gb' => 3, 'g' => 3]; $size = (int)$upload['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0); $fileInfo = $file->getInfo(); $suffix = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); $suffix = $suffix ? $suffix : 'file'; $replaceArr = [ '{year}' => date("Y"), '{mon}' => date("m"), '{day}' => date("d"), '{hour}' => date("H"), '{min}' => date("i"), '{sec}' => date("s"), '{random}' => Random::alnum(16), '{random32}' => Random::alnum(32), '{filename}' => $suffix ? substr($fileInfo['name'], 0, strripos($fileInfo['name'], '.')) : $fileInfo['name'], '{suffix}' => $suffix, '{.suffix}' => $suffix ? '.' . $suffix : '', '{filemd5}' => md5_file($fileInfo['tmp_name']), ]; $savekey = $upload['savekey']; $savekey = str_replace(array_keys($replaceArr), array_values($replaceArr), $savekey); $uploadDir = substr($savekey, 0, strripos($savekey, '/') + 1); $fileName = substr($savekey, strripos($savekey, '/') + 1); // $splInfo = $file->validate(['size' => $size])->move(ROOT_PATH . '/public/uploads' . $uploadDir, $fileName); if ($splInfo) { $imagewidth = $imageheight = 0; if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'])) { $imgInfo = getimagesize($splInfo->getPathname()); $imagewidth = isset($imgInfo[0]) ? $imgInfo[0] : $imagewidth; $imageheight = isset($imgInfo[1]) ? $imgInfo[1] : $imageheight; } $params = array( 'admin_id' => (int)$this->auth->id, 'user_id' => 0, 'filesize' => $fileInfo['size'], 'imagewidth' => $imagewidth, 'imageheight' => $imageheight, 'imagetype' => $suffix, 'imageframes' => 0, 'mimetype' => $fileInfo['type'], 'url' => $uploadDir . $splInfo->getSaveName(), 'uploadtime' => time(), 'storage' => 'local', 'sha1' => $sha1, 'extparam' => json_encode($extparam), ); $attachment = model("attachment"); $attachment->data(array_filter($params)); $attachment->save(); \think\facade\Hook::listen("upload_after", $attachment); $this->success(__('Upload successful'), null, [ 'url' => $ossurl ]); } else { // 上传失败获取错误信息 $this->error($file->getError()); } }
边栏推荐
猜你喜欢
随机推荐
The difference between big-endian and little-endian storage is easy to understand at a glance
System Security and Application
100句话,是否会触动你?
Shell programming loop statement and function
小程序调用百度api实现图像识别
jdbctemplate连接sql server,代码中查出来的数据跟数据库中不一致,如何解决?
canvas 文字垂直居中
SAE定时备份博客数据库
【CNN】2022 ECCV Oral 自反馈学习的mixup训练框架AutoMix
requests之防盗链学习
Processes and Scheduled Tasks
Regular Expressions for Shell Programming
leetcode 36. 有效的数独(模拟题)
requests之数据解析Xpath介绍
jdbctemplate connects to sql server, the data found in the code is inconsistent with the database, how to solve it?
【CNN】白话迁移学习中域适应
[V&N2020 Open] Memory Forensics
黑马2022最新redis课程笔记知识点(面试用)
requests爬取百度翻译
How does STM32 know the usage of FLASH