unicloud云函数url化后,客户端通过url地址向云函数发送数据流并传递到云存储中

本文主要是介绍unicloud云函数url化后,客户端通过url地址向云函数发送数据流并传递到云存储中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

在不久前录制过这样一门课程,使用uniapp生态开发API接口,通过这套课程,你不需要后后端Java、Python、PHP等后端语言,你只需要用前端的知识就可以构建这样一套API接口,而且使用uniapp生态开发接口更简单高效,如果没有学习过这么课程的同学 ,一定要去看一下这们课程。基于uni-app生态开发API接口

当初录制这么课程的时候,只是完成了常规的数据交互,现在有个需求,就是前端通过接口上传图片的操作,从网上找过很多的实现方案,有些内容不够全面,有些方法失效了,那么通过这篇帖子,通过实际的案例,来介绍一下前后端如何联调实现本地图片上传的。

客户端代码

<button @click="fileUpload" class="avatar-wrapper"><image class="avatar" :src="avatarUrl2" mode="aspectFill"></image>
</button>//定义图片地址变量
const avatarUrl2 = ref('https://mp-3309c116-4743-47d6-9979-462d2edf878c.cdn.bspapp.com/xxmPath/useravatar.png');
//上传图片核心函数,将图片转base64,小程序和H5的方式不同,下面有条件编译
function fileUpload(){	// #ifdef H5	uni.chooseImage({count:1,success:res=>{let image = res.tempFiles[0];	if(image.size>=1024*1024){return uni.showToast({icon:"none",title:"图片不能超过1M"})}	getBase64(image).then(base=>{uni.request({url:"https://tea.qingnian8.com/filedemo",data:base,method:"POST",success:res=>{avatarUrl2.value = res.data.fileID}})})}})	// #endif// #ifdef MP-WEIXIN	uni.chooseMedia({count:1,mediaType:["image"],		success:(res)=>{let tempFiles = res.tempFiles[0];if(tempFiles.size>=1024*1024){return uni.showToast({icon:"none",title:"图片不能超过1M"})}			// 获取微信拿到的图片的临时地址并保存到本地			uni.getImageInfo({src: tempFiles.tempFilePath,success: (image)=> {console.log(image);if(image.type=='png'||image.type=='jpeg'){// 对符合类型的图片转换为base64类型uni.getFileSystemManager().readFile({// 小程序官方提供的base64转码APIfilePath:image.path,// 所需转码图像路径encoding:"base64",// 转码类型success:(res)=>{	let imageBase64='data:image/'+image.type+';base64,'+res.data;			uni.request({url:"https://tea.qingnian8.com/filedemo",data:imageBase64,method:"POST",success:res=>{avatarUrl2.value = res.data.fileID}})								}})}else{uni.showToast({title:'当前只支持png/jpeg格式',duration:2500,icon:'none'})}}});}})	// #endif
}//H5端,file转base64
function getBase64(file) {return new Promise((resolve, reject) => {///FileReader类就是专门用来读文件的const reader = new FileReader()//开始读文件//readAsDataURL: dataurl它的本质就是图片的二进制数据, 进行base64加密后形成的一个字符串,reader.readAsDataURL(file)// 成功和失败返回对应的信息,reader.result一个base64,可以直接使用reader.onload = () => resolve(reader.result)// 失败返回失败的信息reader.onerror = error => reject(error)})
}

unicloud云函数端接收base64

exports.main = async (event,context) => {	//接收前端传输过来的base64数据let imageBase = event.body;		//去除编码头let base64 = imageBase.split(",")[1];//获取文件后缀名let suffix = imageBase.split('/')[1].split(';')[0];let result = await uniCloud.uploadFile({//保存到云端的文件名cloudPath: Date.now() + "." + suffix,//base64转buffer(阿里云支持buffer和绝对路径)		fileContent: Buffer.from(base64,'base64'),success(res){//阿里云直接返回文件ID就是下载地址return result.fileID},fail(err) {reject(new Error(err.errMsg))}});			return result;//返回上传文件路径};

以上代码有些字自己编写的,有些是从网上获取的灵感思路,最终整合成这种方案了,因为网上还基本没有写云函数URL化上传到unicloud云存储的完整方法,这里就通过一个小案例,将本地图片上传到unicloud云存储的方式详细的代码开源出来,帮助有需要的同学,如果对你有帮助,请记得点赞收藏哦。

这篇关于unicloud云函数url化后,客户端通过url地址向云函数发送数据流并传递到云存储中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443709

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1