当前位置: 首页 > news >正文

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

一、文件上传路由

        在根目录下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.mrgr.cn/news/65255.html

相关文章:

  • 推荐几款TOP级AI驱动的单元测试工具
  • 已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
  • 通过 Navicat On-Prem Server 无缝管理 MySQL 和 MariaDB
  • 【运输&公路】交通灯检测系统源码&数据集全套:改进yolo11-SCConv
  • 智能网联汽车:人工智能与汽车行业的深度融合
  • Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的领导者
  • 小白也能微调大模型:LLaMA-Factory使用心得
  • 小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
  • Harbor实战:一步步构建Docker私有镜像仓库的权威指南
  • C语言学习,标准库<signal.h>
  • netty之是如何做好服务准备的
  • PMP知识体系
  • 闪存学习_3:闪存SW(软件,software)
  • IMS 注册慢问题分析
  • Throughput
  • 常见的函数求导公式以及复合函数的求导公式
  • Linux命令行速查手册:快速参考与实践
  • 魔改Transformer!9种提速又提效的模型优化方案分享!
  • 【前端基础】盒子模型
  • Python实现Taran算法
  • 个人开发者没有公司或企业信息,如何注册成为商家开发调试小程序,在不同的小程序平台使用企业号的功能,例如:没有商户号,个人怎样接入微信支付?
  • 19种RAG结构
  • 「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制
  • 如何建立一套完善的六西格玛黑带培训体系?
  • java的动态代理
  • OTFS基带通信系统(脉冲导频,信道估计,MP解调算法)