vue 微信小程序 uniapp 微信头像上传裁剪功能

4 篇文章 1 订阅

效果如图:

在这里插入图片描述
操作流程:
个人中心–点击设置头像–选择图片-裁剪–选取–上传

template

<view class="meilan" style="position: relative;">
	<u-row justify="space-between">
		<u-col span="3">设置头像</u-col>
		<u-col span="8">
			<view class="picselect">
				<view class="usernameyang">
					<view class="user-img">
						<image src="/static/img/face.png" mode="" v-if="userImg == null"></image>
						<image :src="userImg" mode="" v-else></image>
					</view>
				</view>
				
			</view>
		</u-col>
		<u-col span="1"><u-icon name="arrow-right"></u-icon></u-col>
	</u-row>
	<cropper selWidth="660rpx" selHeight="660rpx" @upload="myUpload"  avatarStyle="width:100%;height:110rpx;position:absolute;top:0rpx;left:0px;">
	</cropper>
</view>

script

<script>
//引入裁剪组件(cropper在下面已贴出)
import cropper from "@/package/facecropper.vue"
//引入上传图片到服务器方法(uploadFilePromise在下面已贴出)
import {uploadFilePromise} from "@/utils/http.js"
export default {
	onLoad(options) {
		this.getUserInfo()
	},
	components: {
	  cropper
	},
	data() {
		return {
			userinfo:{},
			userImg:null
		};
	},
	methods:{
		//查看当前用户信息
		getUserInfo() {
			uni.showLoading();
			this.$api.task.roleIdList().then(res => {
				uni.hideLoading();
				this.userinfo = res.data.sysUser;
				if(res.data.sysUser.avatar){//用户头像
					this.userImg = res.data.sysUser.avatar
				}else{
					this.userImg = null
				}
			})
		},
		//上传返回图片
		myUpload(rsp) {
		  	const self = this;
		  	// 图片的本地临时文件路径列表
			var tempFilePaths = rsp.path
			uploadFilePromise(tempFilePaths).then(result => {
				self.userImg = result.url
				setTimeout(function() {
					self.gosubmit()
				}, 1000);
			})
			this.gosubmit()
		},
		gosubmit(){
			let imgData= {avatar: this.userImg}
			this.$api.mine.addImg(imgData).then(res => {
				uni.hideLoading();
				if (res.code == 1) {
					uni.showToast({
						title:"图片上传失败",
						icon:"none"
					})
					return
				}
				if (res.code == 0) {
					uni.showToast({
						title:"图片上传成功",
						icon:"none"
					})
					setTimeout(function() {
						uni.switchTab({
							url:"/pages/mine/mine"
						})
					}, 1000);
				}
			})
		}
	}
}
</script>

裁剪组件文件
facecropper.vue 点击此处

图片上传js文件
uploadFilePromise

style

.picselect{
	position: relative;
	margin: 0 auto;
	text-align: center;
}
.usernameyang{
	width: 100%;
	height: 110rpx;
	line-height: 110rpx;
	box-sizing: border-box;
	text-align: right;
	padding-right: 20rpx;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: 30rpx;
	color: #333;
}
.user-img{
	width: 80rpx;
	height: 80rpx;
	border-radius: 8rpx;
	float: right;
	margin-top: 17rpx;
}
.user-img image{
	width: 100%;
	height: 100%;
}
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序uni-app是一个使用Vue.js开发的框架,可以将开发者编写的一套代码发布到iOS、Android、Web以及各种小程序平台,如微信、支付宝、百度等。uni-app支持跨平台开发,开发者可以使用uni-app开发微信小程序,并将其发布到微信平台上。uni-app提供了丰富的生命周期函数,包括app、page和component三个构造器的声明周期函数。具体的生命周期函数包括:\[2\] - app生命周期函数:onLaunch、onShow、onHide、onError等。 - page生命周期函数:onLoad、onShow、onHide、onUnload等。 - component生命周期函数:created、attached、ready、detached等。 通过使用这些生命周期函数,开发者可以在不同的阶段执行相应的操作,实现更加灵活和高效的开发。 #### 引用[.reference_title] - *1* [uniapp微信小程序系列(1)基础与入门](https://blog.csdn.net/zeping891103/article/details/126952270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [微信小程序+uni-app知识点总结](https://blog.csdn.net/liuliuhhxxttxs/article/details/128028711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uniapp开发微信小程序,从构建到上线](https://edu.csdn.net/skill/mini_programs/mini_programs-31ee2719d0214d4a875a82607d1071e5)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值