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

h5图片压缩后变为base64格式的流地址上传服务器

**操作逻辑:前端把图片压缩变为base64格式的流地址,然后把base64格式的流地址传输到后端进行上传到cos服务器

操作流程**
1.前端:我这里是通过uniapp开发h5的,upLoadPutBase64是封装好的上传后端服务器的接口

div写上
<helang-compress ref="helangCompress"></helang-compress>

引入压缩文件import helangCompress from '../../components/helang-compress/helang-compress';
// 单张压缩this.$refs.helangCompress.compress({src: filePath,maxSize: 800,fileType: 'jpg',quality: 0.85,minSize: 640 //最小压缩尺寸,图片尺寸小于该时值不压缩,非H5平台有效。若需要忽略该设置,可设置为一个极小的值,比如负数。}).then((res1) => {// 压缩成功回调// console.log('压缩成功回调', res1)upLoadPutBase64({ //发送请求给后端base64: res1}).then(resdata => {if (resdata.data.code == 200) {//更新信息undateUserInfo({avatar: resdata.data.url}).then(res => {if (res.data.code != 200) {return uni.$u.toast(res.data.message)}this.userInfo.avatar = resdata.data.urluni.setStorage({key: 'userInfo',data: JSON.stringify(this.userInfo),})uni.hideLoading();uni.$u.toast('上传成功');})} else {uni.hideLoading();uni.$u.toast('上传失败');}})}).catch((err) => {// 压缩失败回调uni.hideLoading();uni.$u.toast('上传失败');})

后端hyperf

   //将Base64转为图片并保存到cos服务器#[RequestMapping(path: "putBase64", methods: ["POST"])]#[Middleware(middleware: UserJwtMiddleware::class)]public function putBase64(RequestInterface $request){$file = $request->input('base64'); // 获取上传的文件$base64Prefix = 'data:image/jpeg;base64,';$base64Image = substr($file, strlen($base64Prefix));// 处理上传逻辑,保存文件到本地或其他操作// 示例:上传文件到 COS$cosObjectName = 'ultra/' . date('YmdHis') . '/' . uniqid() . '.png';$secretId = env('COS_SECRET_ID'); // 替换为你的 secretId$secretKey = env('COS_SECRET_KEY'); // 替换为你的 secretKey$region = env('COS_REGION'); // 替换为你的 COS 存储桶所在的地域// 初始化 COS 客户端$cosClient = new Client(['region' => $region, // COS 服务地域'schema' => 'https', // 协议头部,默认为 http'credentials' => ['secretId' => $secretId,'secretKey' => $secretKey]]);try {// 发起创建多部分上传请求$result = $cosClient->putObject(array('Bucket' => env('COS_BUCKET_COS_APPID'), // 替换为你的 COS 存储桶名称,BucketName-Appid'Key' => $cosObjectName,   // 替换为你的对象名称,例如:test/example.jpg'Body' => base64_decode($base64Image),));// 输出的结果为标准json格式return ['code' => 200,'message' => 'success','url' => env('COS_DOMAIN') . '/' . $result['Key'],];// print_r($result);} catch (\Exception $e) {// 输出请求失败时的异常信息// echo $e->getMessage();$logger = logger();$logger->debug('文件上传请求异常信息=', ['exception' => $e, 'uniqueId' => uniqid()]);return ['code' => 500,'message' => 'fail','getMessage' => $e->getMessage(),];}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBoot自动配置(面试重点)
  • C++ 代码实现socket 类使用TCP/IP进行通信 (windows 系统)
  • react18+
  • GO Channel使用详解(各种场景下的最佳实践)
  • 【Unity】关于Luban的简单使用
  • 求职学习day10
  • docker 打包orbbec
  • AV1技术学习:Reference Frame System
  • docker基础镜像
  • OCR识别采购单小程序管理助手
  • 大语言模型-文本向量模型评估基准 MTEB
  • centos系统mysql数据库差异备份与恢复
  • 【Python Tips】判断两个list是否存在相同元素——集合set的使用
  • SQL-REGEX-常见正则表达式的使用
  • python黑马笔记
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • create-react-app做的留言板
  • C语言笔记(第一章:C语言编程)
  • DOM的那些事
  • PermissionScope Swift4 兼容问题
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 悄悄地说一个bug
  • 深入 Nginx 之配置篇
  • 使用 Docker 部署 Spring Boot项目
  • 为什么要用IPython/Jupyter?
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • ​secrets --- 生成管理密码的安全随机数​
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • ()、[]、{}、(())、[[]]命令替换
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (10)STL算法之搜索(二) 二分查找
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (离散数学)逻辑连接词
  • (六)Flink 窗口计算
  • (四)linux文件内容查看
  • (算法)大数的进制转换
  • (一)基于IDEA的JAVA基础12
  • .jks文件(JAVA KeyStore)
  • .net core 的缓存方案
  • .net 发送邮件
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • @RequestMapping用法详解
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [C++]拼图游戏
  • [c语言]小课堂 day2
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • [EWS]查找 文件夹
  • [idea]关于idea开发乱码的配置
  • [Java] IDEA Scala环境搭建