Taro 项目实现更改微信头像,使用七牛上传图片

一、效果图

 

二、taro 提供了选择图片的接口

https://taro-docs.jd.com/taro/docs/apis/media/image/chooseImage

// 文档提供的示例
Taro.chooseImage({count: 1, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有,在H5浏览器端支持使用 `user` 和 `environment`分别指定为前后摄像头success: function (res) {// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片var tempFilePaths = res.tempFilePaths}
})

三、代码实现

分两个部分: 使用七牛上传图片、更换个人信息

1、使用七牛上传图片

上传七牛先要获取到七牛的token,这是后端提供获取token的接口

后端提供把图片上传到七牛的接口

更换个人信息的接口

在工具文件中中封装好了上传到七牛的请求函数

/*** 上传到七牛* @param [] list , list 里面是 file Object 的 Array { url: 本地链接, file: 源文件}*/
const transImgList = async (list) => {let imgTransPromise = list.map (item => {const qiniuTokenData = getGlobalData('qiniuTokenData');  //从缓存中获取的tokenconst otherparams = getSignDataAndOtherParams()  // 请求的必填参数,看自己的项目// console.warn('item.url', item.url)//appConfig.apiPrefix  是自己的服务器地址return Taro.uploadFile({url: `${appConfig.apiPrefix}/upload/img/one?${stringify(otherparams)}`,filePath: item.url,name: 'file',header: {Authorization: `token ${qiniuTokenData.token}`  //把token拿到,看自己的数据来获取},formData: {key: item.url},}).then ((res) => {let newImg = '';try {newImg = JSON.parse(res.data)['fileURL'];} catch (error) {newImg = '';}return newImg;})});let imgs = await Promise.all(imgTransPromise).then((imgList) => {return imgList});return imgs;  // 请求成功会返回图片的地址
}

在更换个人信息的页面中,在页面挂载的时候,获取到token

componentDidMount() {// 获取七牛Tokenthis.props.dispatch({type: 'qiniuUploader/fetchgetQiniuToken'   // 使用的是dva状态管理,请求获取token的接口}).then(res => {setGlobalData('qiniuTokenData', res.response.data) // 把token存储在全局缓存中})}

页面显示, 点击头像区域触发回调handleOperaClick

 <View className="portrait flex-box jc-sb ai-ce" onClick={this.handleOperaClick} data-flag="portrait"><Text className="portrait-text flex-box ai-ce" >头像</Text><Image className="portrait-image flex-box ai-ce" src={utils.deepGet(userInfo, 'headImg')} /></View>

回调handleOperaClick 

  handleOperaClick = (e) => {e.preventDefault();let {flag,} = e.currentTarget.dataset;switch (flag) {case 'portrait': {// 从手机相册中选择图片或使用相机拍照Taro.chooseImage({count: 1, sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'],  // 可以指定来源是相册还是相机}).then( async (res)=> {  //我使用链式写法,也可以使用官方文档提供的方式console.warn('chooseImage then', res)const files = [];  // 以下几行代码是为了处理成自己想要的格式[{file: {path: '', size: ''}, url: '' }]const obj = {};obj.file = res.tempFiles[0];obj.url = res.tempFilePaths[0];files.push(obj);  console.warn('then obj', files)// 上传到七牛返回的图片连接,可以在线访问const itemImgUrlLIst = await utils.transImgList(files || [])console.warn('then itemImgUrlLIst', itemImgUrlLIst)Taro.showLoading();// 把返回的链接传给更换个人信息的接口,完成头像更换this.props.dispatch({type: 'mine/fecthupdatePersonInfo',payload: {headImg: itemImgUrlLIst[0]  // 因为是个数组,获取数组第一个元素}}).then(res => {if (res.resultCode === 200) {Taro.hideLoading();utils.showToastMsg('更换头像成功');// 更换调全局缓存的数据,要不显示不出来const userInfo = getGlobalData('userInfo');userInfo.headImg = itemImgUrlLIst[0];setGlobalData('userInfo', userInfo);this.componentDidMount();}})})break;}case 'name': {Taro.navigateTo({url: `/subMinePages/UpdateName/UpdateName`})break;}case 'phone': {Taro.navigateTo({url: `/subMinePages/UpdatePhone/UpdatePhone`})break;}case 'address': {Taro.navigateTo({url: `/subMinePages/MyAddress/MyAddress`})break;}default: {break;}}}

以上是更换个人头像的大致流程,其他如上传评论图片、售后添加图片等一些需要上传图片的页面,也类似的操作。

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

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

相关文章

微信8.0内测更新!!!(附内测体验资格)

微信IOS版刚刚正式发布了8.0 在苹果AppStore里面即可下载 微信的大版本更新一直比较看心情 上次7.0版本的更新 还是2018年12月21日 这一次8.0的大更新会有什么功能&#xff1f;&#xff01; 一起来看看这次更新了哪些新鲜玩意 ???? 01 / 新的开屏动画 02 / 常用表情更新 调…

chatgpt赋能python:Python自动化办公从入门到精通

Python自动化办公从入门到精通 随着科技进步和信息化程度日益提高&#xff0c;自动化办公已经越来越广泛地利用在各行各业中。Python作为一种非常高效和灵活的编程工具&#xff0c;在自动化办公领域也得到了广泛的应用。本文就介绍如何使用Python进行自动化办公&#xff0c;从…

chatgpt赋能python:Python生成图像:从入门到精通

Python生成图像&#xff1a;从入门到精通 Python是一种广泛使用的编程语言&#xff0c;尤其在数据科学和机器学习领域中得到了广泛地应用。该语言的一个强大功能就是能够生成高质量的图像。在这篇文章中&#xff0c;我们将深入探讨Python生成图像的方法。 Matplotlib简介 Ma…

chatgpt赋能python:Python快速上手指南:从入门到精通

Python 快速上手指南&#xff1a;从入门到精通 什么是Python&#xff1f; Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年开发。它被广泛用于数据科学、人工智能、网络开发、机器学习等领域&#xff0c;因为它易于学习、易于使用、易于阅读和易于维护。Pyt…

chatgpt赋能python:Python游戏开发教程:从入门到精通

Python游戏开发教程&#xff1a;从入门到精通 Python作为一门简单易学且功能强大的编程语言&#xff0c;越来越被广泛应用于游戏开发领域。Python游戏开发不仅可以让你创造有趣的游戏&#xff0c;还可以提高你的编程技能。本文将介绍Python游戏开发的基础知识、工具和技巧&…

chatgpt赋能python:手把手教Python:从入门到精通

手把手教Python&#xff1a;从入门到精通 Python是一种流行的编程语言&#xff0c;它简单易学且有着广泛的应用领域。从自动化脚本编写到数据科学和机器学习&#xff0c;Python都有着无数的应用场景。而在这篇文章中&#xff0c;我们将会从入门到精通手把手教您如何学习Python…

chatgpt赋能python:Python扩展开发:从入门到精通

Python扩展开发&#xff1a;从入门到精通 Python是一门高效、可扩展、易学易用的编程语言。Python的优秀性能在科学计算、数据处理、web开发等领域表现突出。然而&#xff0c;Python在特定的应用场景中&#xff0c;如图像处理和机器学习等领域&#xff0c;需要更高效的代码执行…

chatgpt赋能python:Python构建模型:从入门到精通

Python构建模型&#xff1a;从入门到精通 在数十年的软件开发中&#xff0c;Python一直是最受欢迎的编程语言之一。Python不仅易于入门&#xff0c;而且能够对各种数据科学应用进行建模和分析。在这篇文章中&#xff0c;我们将介绍Python几种常见的构建模型的方法和应用。 为…

python爬取微博热搜数据并保存!

主要用到requests和bf4两个库将获得的信息保存在d://hotsearch.txt下importrequests;importbs4mylist[]rrequests.get(ur… 很多人学习python&#xff0c;不知道从何学起。 很多人学习python&#xff0c;掌握了基本语法过后&#xff0c;不知道在哪里寻找案例上手。 很多已经做案…

文字转语音软件哪个比较好?快来收藏这几个宝藏软件

大家都知道配音是干什么的吧。简单来说&#xff0c;我们今天的有声读物、教学视频、广播促销等都是通过由配音来完成的。当然配音也分人工和软件配音。如果我们觉得自己的声音条件优越&#xff0c;可以选择自己配音。不过如果你们是因为紧张而无法配音的话&#xff0c;就可以使…

如何将文字转语音?这4个文字转语音方法简直宝藏

近年来&#xff0c;文字转语音技术的发展&#xff0c;让我们的生活更加便利&#xff0c;特别是在语音技术不断普及的今天&#xff0c;文字转语音技术更是被广泛应用于各种场合。那你知道如何将文字转语音吗&#xff1f; 本文将介绍四款文字转语音软件&#xff1a;迅捷文字转语音…

免费使用微软Azure进行文字转语音的三种方法!最自然接近人声的机器配音技术。

微软的TTS语音合成技术目前已经做到了非常自然&#xff0c;接近真人音色&#xff0c;在不了解前提下有时候真的很难分辨出这是机器合成的声音。 目前微软的文字转语音已经支持21个中文简体的声音&#xff0c;并且支持多种声音风格的选择和语速、音调的调整。 免费使用微软Azu…

30分钟音频当数据,任何音色零门槛生成,产品免费体验

允中 发自 凹非寺量子位 | 公众号 QbitAI 这年头&#xff0c;万物都可以是AI生成的&#xff0c; 从文字&#xff0c;到图片&#xff0c;亦或是目前火热的虚拟主播&#xff0c; 设想下&#xff0c;你在直播平台看到的虚拟主播背后&#xff0c;有可能是这样的画面。 连声音都可以…

无声语音的数字发声-Digital Voicing of Silent Speech

无声语音的数字发声 Electromyography传感器被放置在嘴部附近用来捕捉信号 摘要 此论文主要帮助“哑巴”通过EMG&#xff08;electromyography&#xff09;捕捉肌肉信号从而“说话”。这个论文的创新点在于&#xff0c;它是第一个使用EMG数据来训练语音&#xff0c;模型的错误…

AI拟声: 5秒内克隆您的声音并生成任意语音内容

特征 &#x1f30d; 中文支持普通话并测试了多个数据集&#xff1a;aidatatang_200zh、magicdata、aishell3、data_aishell等。 &#x1f929; PyTorch为 pytorch 工作&#xff0c;在 1.9.0 版本中测试&#xff08;最新于 2021 年 8 月&#xff09;&#xff0c;GPU Tesla T4 …

想知道如何文字转语音真人发声?这3款工具轻松实现

我们在生活中有很多时候都会遇到需要将文字转语音的情况&#xff0c;例如为自己录制的vlog配音、自制有声小说、朗读某一新闻等等。但是却有许多小伙伴不知道如何实现这些操作&#xff0c;也或者是找不到合适的软件&#xff0c;毕竟现在市面上的工具鱼龙混杂&#xff0c;要找到…

手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

手把手教你用JAVA实现“声音复刻”功能&#xff08;复刻你的声音&#xff09;标贝科技 前言 什么是声音复刻&#xff1f; 使用少量的用户声音&#xff0c;短时间内快速为用户量身打造个人定制音色 一、内容太长不愿意看&#xff0c;直接使用系列 声音复刻分为两步 &#xff…

使用20分钟语音数据进行语音复刻

最近做了一些tts方面的工作&#xff0c;其中一项就是音色克隆&#xff0c;调研了许多开源项目&#xff0c;经过对比发现百度的开源项目paddlespeech的效果还不错&#xff0c;项目的活跃度也很高&#xff0c;比较适合初学者或者感兴趣的同学入门。 一、语音克隆模型介绍 目前主…

一种不太聪明的电话语音识别方案

现如今ASR(语音识别技术)发展到什么阶段我不清楚&#xff0c;但识别率肯定是达不到100%的&#xff0c;识别率跟你所采用的识别模型&#xff0c;声音样本丰富程度&#xff0c;和语音文件的音质有关。 如果普通话标准&#xff0c;且语音文件质量可以的情况下&#xff0c;主流的几…

Android 集成科大讯飞语音并实现语音识别

前言&#xff1a;此博客内容有&#xff0c;集成讯飞语音sdk&#xff0c;实现了语音唤醒&#xff0c;在线语音识别&#xff0c;离线语音识别&#xff0c;更新本地离线语音词典 集成讯飞语音SDK 注册账号下载SDK 百度搜索科大讯飞&#xff0c;打开网站&#xff0c;没有账号的根…