laravel Dcat Admin 入门应用(五)文件上传之OSS自定义上传

laravel Dcat Admin 入门应用(五)文件上传之OSS自定义上传

Dcat Admin 是一个基于 Laravel-admin 二次开发而成的后台构建工具,只需很少的代码即可构建出一个功能完善的高颜值后台系统。支持页面一键生成 CURD 代码,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的 HTML 代码。
数据表单通过以下的调用来生成图片/文件上传表单,支持本地和云存储的文件上传,该文章介绍如何通过自定义上传路径处理文件上传和将文件存储到阿里云OSS。

1、上传组件是基于webuploader实现的,具体的使用配置可参考webuploader官方文档。

2、通过自定义上传地址,实现定制化处理上传文件

3、使用juhedata/aliyun-oss组件完成oss图片上传

福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全

自定义文件上传

创建文件上传表单

    /*** 表单图片上传** @param Form $form*/protected function formImg(Form $form){$form->image('img', '图片')->autoUpload() //选择图片后自动上传->disableRemove() //禁止删除数据库存储的文件地址:防止误删->disableAutoSave() //禁止上传成功后自动保存到数据库:根据项目需求->accept('jpg,png,gif,jpeg', 'image/*') //设置上传类型->maxSize(500) //文件尺寸->url('tools/upload/file') //这里是重点,通过自定义的文件上传地址定制化处理->rules(['string', 'max:250'])->required();}

添加自定义上传路由

    $router->any('upload/file/banner', 'UploadController@handle');

创建自定义处理

自定义上传处理需要使用HasUploadedFile这个trait,一些响应方法和上传文件获取

通过 return t h i s − > r e s p o n s e U p l o a d e d ( this->responseUploaded( this>responseUploaded(url, $url);返回上传成功响应

OssUpload完成上传trait

<?phpnamespace App\Admin\Controllers\Tools;use App\LocalTraits\OssUpload;
use Dcat\Admin\Traits\HasUploadedFile;
use Illuminate\Http\Request;class UploadController
{use HasUploadedFile, OssUpload;/*** 上传文件到oss** @param Request $request* @param string $type* @return \Illuminate\Http\JsonResponse*/public function handle(Request $request, $type = 'banner'){//判断上传类型和文件上传规则是否存在if (!isset($this->allowDir[$type]) || !isset($this->{$this->allowDir[$type]})) {return $this->responseErrorMessage(errorMsg(1001));}$file = $this->file();// 上传的文件属性;如 article:文章,校验在 OssUpload 类if (!is_file($file)) {return $this->responseErrorMessage('上传文件不存在或错误');}// 判断文件是否上传成功if (method_exists($file, 'isValid') && $file->isValid()) {// 校验上传的文件if (($url = $this->uploadFile($file, $type) && is_numeric($url)) {return $this->responseErrorMessage($url.errorMsg($url, '文件上传异常'));}return $this->responseUploaded($url, $url);}return $this->responseErrorMessage('文件上传失败');}
}

安装juhedata/aliyun-oss

安装上传组件

composer require juhedata/aliyun-oss

添加OSS文件

将OSS文件复制到App/Services目录下或自定义的位置

OssUpload处理上传

  /*** 上传示例:可以自行扩展** @param $file* @param string $dir* @param string $rule* @return bool|int|string*/protected function uploadFile($file, $dir = 'banner'){$bucket = 'sdkcn';$filePath = $file->path();$extension = $file->guessClientExtension();$imgName = time() . '-' . mb_substr(md5("sdk-img:" . $rule), 8, 16);$pathName = $dir . '/img/' . date('Ym') . '/' . $imgName . '.' . $extension;try {OSS::publicUpload($bucket, $pathName, $filePath, ['ContentType' => $file->getMimeType()]);return OSS::getPublicObjectURL($bucket, $pathName) . $suffix;} catch (Exception $e) {return 1006;}}

福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ps给gif动图抠图

目录 导入gif图片 打开时间轴 选择图片 魔棒抠图-初步抠图 套索抠图-精准抠图 导入gif图片 打开时间轴 因为gif动图实际上多张图片实现的效果&#xff0c;所以如果要给gif抠图&#xff0c;就得挨个给每个时间线的图片抠图 点击窗口->时间轴 选择图片 在时间轴上选择要…

以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!

大家好,我是CodeQi! 项目开发中,Loading 的展示与关闭是非常关键的用户体验设计。 当我们的应用需要发起多个异步请求时,如何有效地管理全局 Loading 状态,保证用户在等待数据加载时能有明确的反馈,这是一个值得深入探讨的问题。 本文将以 Vue 3 项目为例,详细讲解如…

eventloop 事件循环机制 (猜答案)

// eventloop 事件循环机制// console.log(555);setTimeout(() > {console.log(666);})let p new Promise((resolve,reject)>{// 同步执行console.log(111);resolve();});// promise 的回调函数是异步的微任务p.then(v > {console.log(222);}, r > {console.log(r…

STMF4学习笔记(天空星)

前言&#xff1a;本篇笔记参考嘉立创文档&#xff0c;连接放在最后 #RTC相关概念定义 Real-Time Clock 缩写 RTC 翻译 实时时钟&#xff0c;是单片机片内外设的一种&#xff0c;作用于提供准确的时间还有日期&#xff0c;这个外设有独立的电源&#xff0c;当单片机停止供电…

Java同步包装器

通过 Collections.synchronizedList() 方法将一个普通的 ArrayList 包装成了线程安全的 List&#xff1a; import java.util.*;public class SynchronizedWrapperExample {public static void main(String[] args) {// 创建一个非线程安全的 ArrayListList<String> list…

AzureDataFactory Dataverse connector自动处理了分页问题(单次查询上限5000条的限制)

众所周知&#xff0c;在用fetch执行D365的查询时&#xff0c;单次的查询是5000条&#xff0c;如果超过5000条则需要自己处理分页&#xff0c;添加额外的处理逻辑&#xff0c;但在ADF中&#xff0c;Dataverse connector已经自动处理了分页&#xff0c;我们可以很简单的做个POC. …

计算机网络——数据链路层(点对点协议PPP)

点对点协议PPP的概述 对于点对点的链路&#xff0c;目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。 它主要应用于两个场景&#xff1a; 用户计算机与ISP之间的链路层协议就是点对点协议 PPP&#xff0c;1999年公布了回以在以太网上运行的PPP协…

【教程】lighttpd配置端口反向代理

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 1、修改配置文件&#xff1a; sudo vim /etc/lighttpd/lighttpd.conf2、先添加mod_proxy&#xff1a; 3、然后添加端口映射&#xff1a; 4、保存&…

耗材分类功能解析:智慧校园的必备利器

在智慧校园的资产管理架构中&#xff0c;耗材分类功能是确保日常运营物资有效管理的关键组成部分&#xff0c;它致力于提高耗材使用的效率和经济性。此功能通过智能化、精细化的管理手段&#xff0c;对校园内各种易耗品进行科学分类与跟踪。 耗材分类功能首先建立在对校园日常运…

C++ 实现QT信号槽

https://github.com/libsigcplusplus/libsigcplusplus #include <iostream>/* 在sigslot.h的420,将&#xff1a; //typedef sender_set::const_iterator const_iterator; 改为&#xff1a; //typedef typename sender_set::const_iterator const_iterator;#include <…

Softing助力工业4.0 | 通过OPC UA和MQTT访问SINUMERIK 840D CNC控制器数据

Softing uaGate 840D是用于采集西门子SINUMERIK 840D SL/PL CNC控制器数据的物联网网关&#xff0c;支持OPC UA服务器和MQTT发布功能。该网关提供对SINUMERIK 840D CNC控制器机床数据的访问&#xff0c;支持读取、处理重要的主轴和从轴数据&#xff0c;例如扭矩和功耗&#xff…

C++——stack和queue类用法指南

一、stack的介绍和使用 1.1 stack的介绍 1、stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行插入与提取操作 2、stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&am…

Halcon OCR字符识别(极坐标转换,字符识别)

Halcon OCR字符识别&#xff08;极坐标转换&#xff0c;字符识别&#xff09; 代码 * 1.加载图片 *************************************************** dev_close_window () read_image (Image, ./img) get_image_size (Image, Width, Height) dev_get_window (WindowHandle…

Vue移动端地图App:van-uploader导致的卡顿问题

问题描述 基于Vue3+Vant IU 4开发的移动端地图App,在进行地图点位上报、上报记录查看过程中,出现App卡顿、甚至闪退的问题,进行问题定位之后,发现是van-uploader组件导致的问题。 van-uploader文件上传组件 van-uploader组件用于将本地的图片或文件上传至服务器,并在上传…

智慧课堂基于YOLOv8的学生上课行为检测

数据集 学生上课行为检测&#xff0c;我们直接使用公开数据集 共三类行为&#xff1a;举手、读书、写字 数据集已经按照YOLO格式配置好&#xff0c;数据内容如下 模型训练 ​ 采用YOLOv8模型进行训练&#xff0c;官方代码 首先是划分数据集&#xff0c;分为训练集、验证&a…

QT创建地理信息shp文件编辑器shp_editor

空闲之余创建一个简单的矢量shp文件编辑器&#xff0c;加深对shp文件的理解。 一、启动程序 二、打开shp文件 三、显示shp文件的几何图形 四、双击右边表格中的feature&#xff0c;主窗体显示选中feature的各个节点。 五、鼠标在主窗体中选中feature的节点&#xff0c;按鼠标左…

程序员AI提效案例:统计B站课程耗时情况

文章目录 一&#xff0c;时长统计需求二&#xff0c;一波三折三&#xff0c;终极方案 AIJava总结 今天为了写一篇博客&#xff0c;这篇博客介绍了B站的一个Java项目&#xff0c;这个项目分为三个阶段&#xff1a; 初级篇高级篇运维篇 一&#xff0c;时长统计需求 我想根据每个…

从零开始学量化~Ptrade使用教程(二)——主界面及基本功能

主界面 主界面如下图所示&#xff0c;包含标题栏、行情模块、交易模块以及查询模块底部的状态栏。其中交易模块和行情模块之间可拖动&#xff0c;以此来调整交易模块和行情模块大小。 多账号管理 多账号管理功能&#xff0c;实现证券、信用、期权多账号管理&#xff0c;用于支…

第1章 大数据技术的基石

目录 第1章 大数据技术的基石 1.1什么是大数据 1.2 大数据技术的生态系统概览 1.3大数据对社会经济的深远影响 第1章 大数据技术的基石 在信息爆炸的时代背景下&#xff0c;大数据已成为推动社会进步与经济发展的核心驱动力之一。随着互联网、物联网、社交媒体的迅猛发展&a…

鸿蒙数据防泄漏(DLP)【Data Loss Prevention Kit开发指导】

Data Loss Prevention Kit开发指导 DLP是系统提供的系统级的数据防泄漏解决方案&#xff0c;提供一种称为DLP的文件格式。后缀格式为“原始文件名&#xff08;包含原始文件后缀&#xff09;.dlp”&#xff0c;例如: “test.docx.dlp”&#xff0c;文件由授权凭证和原始文件密文…