uni-app头像上传(完善个人信息功能),后端NodeJs+MySQL

1. uni-app代码

<template>
	<view class="page-main">
		<view class="upload">
			<text>头像:</text>
			<!-- <view class="box" @click="chooseUploads">
				<image class="box-img" src="../../static/index/jia.png"></image>
			</view> -->
			<view class="box" @click="upload">
				<image class="box-img" :src="avatar" mode=""></image>
			</view>
		</view>
		<view class="user-info">
			<view class="form">
				<uni-forms ref="form" :modelValue="formData" label-position="left">
					<!-- :rules="rules" name="iphone"name="password"   avatar-->
					<uni-forms-item label="姓名:" label-width="20px">
						<input class="input" type="text" value="" v-model="formData.Susername" placeholder="请输入姓名" />
					</uni-forms-item>
					<uni-forms-item label="性别:" label-width="0px">
						<input class="input" type="text" value="" v-model="formData.Ssex" placeholder="请输入性别" />
					</uni-forms-item>
					<uni-forms-item label="年龄:" label-width="0px">
						<input class="input" type="text" value="" v-model="formData.Sage" placeholder="请输入年龄" />
					</uni-forms-item>
					<uni-forms-item label="个人简介:" label-width="0px">
						<textarea class="input-textarea" type="textarea" value="" v-model="formData.direction"
							placeholder="请输入" />
					</uni-forms-item>

				</uni-forms>

				<button class="loginBtn" type="primary" @click="submit"><text class="btnValue">提交</text></button>

			</view>
		</view>

	</view>
</template>

<script>
	export default {
		data() {
			return {
				 iconcheck:0, //头像是否改变
				avatar:"", //默认头像
				formData: {
					direction: '',
					Sage: '',
					Ssex: '',
					Susername: '',
				},

			}
		},
		
		methods: {
			upload(){
				uni.chooseImage({
					count:1,
					success: (res)=>{
						this.avatar=res.tempFilePaths[0]
					}
				})
			},
			submit(){
				console.log(this.avatar)
				var _this = this;
				uni.uploadFile({
				    url: 'http://47.107.93.173:3000/avatar', //仅为示例,并非真实接口地址。
					filePath: _this.avatar,
					name: 'avatar',
				    formData: {
						'direction':_this.formData.direction,
						'Sage':_this.formData.Sage,
						'Ssex':_this.formData.Ssex,
						'Susername':_this.formData.Susername,
				    },
				    success: (res) => {
				        console.log(res);
				    }
				});
			}
		}
	}
</script>


2. 后端代码

exports.avatar = (req,res)=>{
    const avatar ={
        avatar:req.file.filename
    }
    const info = req.body;
    Object.assign(info,avatar)
    let sql = 'update users  set avatar=?,Ssex=?,Sage=?,direction=? where Susername=?;';
    let data = [info.avatar,info.Ssex,info.Sage,info.direction,info.Susername]
    db.base(sql,data,(result) => {
        if(result.affectedRows >= 1){
           res.send({
               flag:1,
               data:data
           })
        }else{
            return res.send({flag:2});
        }
    })
    }
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现登录功能需要以下步骤: 1. 创建一个小程序,包括登录页面和后台 API 接口。 2. 在小程序中使用 `wx.login()` 获取用户临时登录凭证 code,并将其发送到后台 API 接口。 3. 后台 API 接口使用 `code` 和小程序开发者密钥 `appid`、`secret` 调用微信提供的 API 接口获取用户的 `openid` 和 `session_key`。 4. 将获取到的 `openid` 保存到 MySQL 数据库中,并生成一个随机的 `token`,将其返回给小程序。 5. 小程序将 `token` 保存到本地,以后每次请求后台 API 接口时,都需要在请求头中带上 `token`。 6. 后台 API 接口在接收到请求时,从请求头中获取 `token`,并在 MySQL 数据库中查找对应的 `openid`,如果存在则说明用户已登录,否则返回未登录错误信息。 下面是具体的实现步骤: 小程序端代码: ```javascript // login.js Page({ login: function() { wx.login({ success: res => { wx.request({ url: 'http://localhost:3000/login', method: 'POST', data: { code: res.code }, success: res => { // 将token保存到本地 wx.setStorageSync('token', res.data.token) } }) } }) } }) // index.js Page({ onLoad: function() { wx.request({ url: 'http://localhost:3000/user', header: { 'token': wx.getStorageSync('token') }, success: res => { console.log(res.data) } }) } }) ``` 后台 API 接口代码: ```javascript const express = require('express') const app = express() const mysql = require('mysql') const request = require('request') // 创建 MySQL 连接池 const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'test' }) // 登录接口 app.post('/login', (req, res) => { const code = req.body.code const appid = 'your appid' const secret = 'your secret' // 调用微信 API 获取 openid 和 session_key request(`https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${secret}&js_code=${code}&grant_type=authorization_code`, (err, response, body) => { const { openid, session_key } = JSON.parse(body) // 生成一个随机 token const token = Math.random().toString(36).substr(2) // 将 openid 和 token 保存到 MySQL 数据库中 pool.query('INSERT INTO user SET ?', { openid, token }, (err, result) => { if (err) throw err res.send({ token }) }) }) }) // 用户信息接口 app.get('/user', (req, res) => { const token = req.headers.token // 在 MySQL 数据库中查找对应的 openid pool.query('SELECT openid FROM user WHERE token = ?', [token], (err, result) => { if (err) throw err if (result.length === 0) { res.status(401).send('Unauthorized') } else { // 如果存在对应的 openid,则说明用户已登录 res.send('User Info') } }) }) app.listen(3000, () => console.log('Server started')) ``` 以上代码仅为示例,实际项目中需要根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拼搏的小浣熊

你的鼓励是我创作的巨大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值