群控系统服务端开发模式-应用开发-文件上传功能开发

一、文件上传路由

        在根目录下route文件夹中app.php文件中,添加文件上传功能路由,代码如下:

Route::post('upload/file','common.Upload/file');// 上传文件接口

二、功能代码开发

        在根目录下app文件夹下common文件夹中创建上传控制器并命名为Upload,代码如下:

<?php
/*** 上传* User: 龙哥·三年风水* Date: 2024/11/4* Time: 10:14*/
namespace app\controller\common;
use app\controller\Base;
use app\model\param\Upload as ParamUpload;
use Error\BaseError;
use think\exception\ValidateException;
use Upload\UploadFactory;class Upload extends Base
{//上传文件public function file(){$file = $this->request->file();$type = $this->request->param('type');try{$files = $file['file'];//查出上传设置$uploadparam = ParamUpload::dataFind(['id' => 1],'upload_type,checked_images,checked_videos,checked_filedocs,upload_number');//当下验证后缀$fileExt = [];//指定类型switch ($type){case 'image':$fileExt = $uploadparam['checked_images'];break;case 'video':$fileExt = $uploadparam['checked_videos'];break;case 'filedoc':$fileExt = $uploadparam['checked_filedocs'];break;default:throw new ValidateException('不支持的通道');break;}//验证validate(['file'=>'fileSize:'.($uploadparam['upload_number'] * 1024 * 1024).'|fileExt:'.$fileExt])->check($file);//获取文件后缀名$fileExtName = $files->getOriginalExtension();//新的文件名$fileName = str_replace('.'.$fileExtName,'',$files->getOriginalName());//截取文件后缀名$format = '.'.$fileExtName;//截取文件后缀名如 (.jpg)//原文件$primaryFileName = $fileName.$format;//加密后的文件$encryptionFileName = sha1(date('YmdHis', time()) . uniqid()) . $format;//要上传的路径$object = date('Y-m-d').'/'.$encryptionFileName;//临时文件地址$filePath = $files->getRealPath();//计算文件大小$fileSize = sprintf("%01.2f", $files->getSize()/(1024*1024));//调用工厂$uploadFactory = new UploadFactory();//选择通道$uploadHandle = $uploadFactory->getUploadHandle();$res = $uploadHandle->uploadFile($object,$uploadparam['upload_type'] == 1 ? $files : $filePath);$data['url'] = $res;$data['primary_fileName'] = $primaryFileName;$data['encryption_fileName'] = $encryptionFileName;$data['fileName_size'] = $fileSize;$data['fileName_type'] = $fileExtName;return succ('上传成功',$data);}catch (ValidateException $e){throw new BaseError($e->getMessage(),50000,200);}}
}

三、测试        

通过测试,发现一个错误,在上传文件工厂控制类里面。第一个就是参数错误,第二个是调用上传通道错误。《群控系统服务端开发模式-应用开发-上传工厂开发》中代码已修改。

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

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

相关文章

sklearn 安装使用笔记

目录 安装&#xff1a; sklearn 安装&#xff1a; pip install scikit-learn pip install scikit-image from skimage.metrics import structural_similarityimport sklearn

pycharm小游戏贪吃蛇及pygame模块学习()

由于代码量大&#xff0c;会逐渐发布 一.pycharm学习 在PyCharm中使用Pygame插入音乐和图片时&#xff0c;有以下这些注意事项&#xff1a; 插入音乐&#xff1a; - 文件格式支持&#xff1a;Pygame常用的音乐格式如MP3、OGG等&#xff0c;但MP3可能需额外安装库&#xf…

检索增强和知识冲突学习笔记

检索增强生成任务&#xff08;Retrieval-Augmented Generation, RAG&#xff09;是一种自然语言处理技术&#xff0c;它结合了信息检索和生成模型&#xff0c;用于生成高质量的文本输出。具体来说&#xff0c;RAG 模型在生成文本时&#xff0c;会先通过检索模块从外部知识库或文…

从0开始深度学习(25)——多输入多输出通道

之前我们都只研究了一个通道的情况&#xff08;二值图、灰度图&#xff09;&#xff0c;但实际情况中很多是彩色图像&#xff0c;即有标准的RGB三通道图片&#xff0c;本节将更深入地研究具有多输入和多输出通道的卷积核。 1 多输入通道 当输入包含多个通道时&#xff0c;需要…

网管平台(进阶篇):如何正确的管理网络设备?

网络设备作为构建计算机网络的重要基石&#xff0c;扮演着数据传输、连接和管理的关键角色。从交换机、路由器到防火墙、网关&#xff0c;各类网络设备共同协作&#xff0c;形成了高效、稳定的网络系统。本文将详细介绍网络设备的种类&#xff0c;并探讨如何正确管理这些设备&a…

5G NR 信道

简介   在UE和5G基站之间的空中接口上&#xff0c;5G New Radio在各种物理通道上承载信息。这些通道同时承载用户平面&#xff08;UP&#xff09;或控制平面&#xff08;CP&#xff09;信息。   但是&#xff0c;5G NR协议栈有许多层&#xff0c;每一层都以不同的抽象级别与…

Flink的流、批处理

Flink的数据流处理&#xff0c;是持续流模型&#xff0c;数据不会落地&#xff0c;上游和下游的Task同时启动&#xff0c;等待数据的到达&#xff0c;Flink的批处理还是用的MapReduce计算模型&#xff0c;先处理map端&#xff0c;再执行reduce端。 flink的流处理(STREAMING)&a…

交安安全员考试真题及答案

交安安全员考试真题及答案 34.根据《企业安全生产费用提取和使用管理办法》&#xff0c;下列费用中&#xff0c;不属于安全生产费用支出范围的是&#xff08;&#xff09;。 A.配备应急器材费用 B.操作器械竞赛费用 C.安全标准化建设费用 D.重大事故隐患整改费用 答案&am…

论文 | Teaching Algorithmic Reasoning via In-context Learning

这篇论文《通过上下文学习教授算法推理》探讨了如何通过上下文学习&#xff08;In-context Learning, ICL&#xff09;有效训练大型语言模型&#xff08;LLMs&#xff09;以进行算法推理。以下是从多个角度对这项工作的详细解读&#xff1a; 1. 问题陈述与研究动机 算法推理的…

RK3568平台(基础篇)性能分析工具

一.Linux 性能优化工具简介 Linux 系统性能指标无非就是这几个方面,CPU、内存、磁盘 I/O、文件系统、网络等相关指标。不同的性能指标都有对应的具体命令工具进行查看与监控,接下来我们将介绍一些常见的 Linux 系统性能指标及其对应的命令工具(通过命令工具找出 Linux 系统性…

2024阿里云CTF Web writeup

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 前言 又是周末…

机柜的通用技术要求

通用技术要求机柜的各项技术标准均遵循国家技术监督局的相关标准和技术规范&#xff0c;各项指标&#xff08;包含但不限定于上述&#xff09;均符合国家相关标准。机柜柜体应采用优质冷轧钢板或进口卷板(★需提供厂家证明)&#xff1b;所采用的材料、紧固件、密封件&#xff0…

Bartender 5 for Mac 菜单栏管理软件 安装教程【保姆级教程,操作简单小白轻松上手使用】

Mac分享吧 文章目录 Bartender 5 for Mac 菜单栏管理软件 安装完成&#xff0c;软件打开效果一、Bartender 5 菜单栏管理软件 Mac电脑版——v5.2.3⚠️注意事项&#xff1a;1️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件3️⃣&#xff1a;打开软件&#xff0c;根据自己…

职场逆袭!学会管理上司,你也能成为职场赢家

书友们&#xff0c;不要错过了&#xff01;我挖到了一本真正让我彻夜难眠的小说&#xff0c;情节跌宕起伏&#xff0c;角色鲜活得就像从书里跳出来陪你聊天。每一页都是新的惊喜&#xff0c;绝对让你欲罢不能。要是你也在寻找那种让人上瘾的阅读体验&#xff0c;这本书就是你的…

Actor-Critic方法【A2C,A3C,Policy Gradient】

强化学习笔记系列目录 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实例分析:GridWorld 第六章 蒙特卡洛方法 第七章 Robbins-Monro算法 第八章 多臂老虎机 第九章 强化学习实例分析:CartPole 第十章 时序差分法…

儿童自闭症康复:找到孩子的微小进步,看见希望

在广州市从化区的宁静一隅&#xff0c;有两所特别的学校——星贝育园康复中心的江埔校区和太平校区&#xff0c;它们如同两盏温暖的灯塔&#xff0c;照亮了无数自闭症儿童及其家庭的康复之路。星贝育园&#xff0c;这个全国知名的广泛性发育障碍全托寄宿制儿童康复训练机构&…

kubevirt cloud-init配置

https://cloudinit.readthedocs.io/en/latest/reference/examples.html (示例) https://cloudinit.readthedocs.io/en/latest/reference/faq.html (常见问题) https://cloudinit.readthedocs.io/en/latest/howto/debug_user_data.html (检查user_data) https://clo…

若依管理系统使用已有 Nacos 部署流程整理

背景 玩了一下开源项目 RuoYi 管理系统Cloud 版&#xff0c;卡住的地方是&#xff1a;它用到了 nacos 配置管理&#xff0c;如果用的 nacos 环境是单机且是内置数据库的话&#xff0c;该怎么配置呢&#xff1f; 本文整理本机启动 RuoYi Cloud 应用本地部署的过程&#xff0c;…

数字信号处理-FPGA插入不同误码率的模拟源

module data_error_injector (input clk, // 时钟信号&#xff0c;50MHzinput reset, // 复位信号&#xff0c;高有效input DIN_EN, // 数据输入使能&#xff0c;高有效input [7:0] ERROR_LEVEL, // 错误等级…

对称二叉树(力扣101)

题目如下: 思路 对于这道题, 我会采用递归的解法. 看着对称的二叉树, 写下判断对称的条件, 再进入递归即可. 值得注意的是, 代码中会有两个函数, 第一个是isSymmetric,第二个是judge. 因为这里会考虑到一种特殊情况, 那就是 二叉树的根结点(最上面的那个),它会单独用…