国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序上傳頭像的臨時路徑,持久化保存到服務(wù)器與數(shù)據(jù)庫(nodejs后臺開發(fā))

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序上傳頭像的臨時路徑,持久化保存到服務(wù)器與數(shù)據(jù)庫(nodejs后臺開發(fā))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

從微信小程序中返回的用戶頭像臨時地址 http://tmp/H0GP7BW5HTQs846c0d9deef32d42f2203340efc4a5c3.jpeg 會失效,且只能一段時間內(nèi)在微信訪問,并且無法在公網(wǎng)訪問用戶頭像臨時地址avatarUrl。

所以需要將臨時地址avatarUrl轉(zhuǎn)成實(shí)際可用的地址保存到mysql數(shù)據(jù)庫的wxusers表的avatarUrl列中,同時將新的圖片路徑保存到服務(wù)器的./public/upload目錄下。

一開始我是這么寫的:

微信小程序通過授權(quán)獲取用戶頭像的wxml代碼如下

<view class="btnavatar">
? ? <button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar" ?value='{{avatarUrl}}'>
? ?<view>
? ? <image class="avatar" src="{{avatarUrl}}"></image>
? ?</view>
? </button>
</view>


對應(yīng)的微信小程序TS代碼如下

onChooseAvatar(e) {
const { avatarUrl } = e.detail?
this.setData({
? avatarUrl,
})
console.log("獲取到用戶輸入的頭像為"+ avatarUrl)
? ? ?// 登錄
? ? ?var that = this;
? ? ?wx.login({
? ? ? ? ?success: function(res) {
? ? ? ? ? ? ?//console.log(res.code)
? ? ? ? ? ? ?// 發(fā)送 res.code 到后臺換取 openId, sessionKey, unionId
? ? ? ? ? ? ?if (res.code){
? ? ? ? ? ? ? ? ?wx.request({
? ? ? ? ? ? ? ? ? ? ?url: config.apiUrl + '/api/getOpenid',
? ? ? ? ? ? ? ? ? ? ?method: 'POST',
? ? ? ? ? ? ? ? ? ? ?data:{
? ? ? ? ? ? ? ? ? ? ? ? ?code:res.code,
? ? ? ? ? ? ? ? ? ? ?},
? ? ? ? ? ? ? ? ? ? ?success:function(response){
? ? ? ? ? ? ? ? ? ? ? ? ?console.log("成功獲取到用戶openid 下面開始獲取頭像:",response.data.openid)
? ? ? ? ? ? ? ? ? ? ? ? ?const openid = response.data.openid;
wx.request({
? ? url: config.apiUrl + '/api/avatarUrl',
? ? method: 'POST',
? ? data: {
? ? ? ? openid,
? ? ? ? avatarUrl,
? ? },
? ? success: function(res) {
? ? ? ? console.log('submit success');
? ? ? ? console.log("成功獲取到用戶頭像存入數(shù)據(jù)庫:",avatarUrl)
? ? },
? ? fail: function(res) {
? ? ? ? console.log('submit fail');
? ? }
})
}
})
}else{
console.log('wx.login()調(diào)用失??!'+res.errMsg);
}
}
})
},


以nodejs為后臺保存頭像到mysql數(shù)據(jù)庫的路由代碼如下

const express = require('express');
const router = express.Router();
const sql = require('../sql');
const request = require("request");
//存入頭像
router.post('/avatarUrl', (req, res) => {

? ? const openid = req.body.openid;
? ? const avatarUrl = req.body.avatarUrl;
? ? const nickname = req.body.nickname;
? ? const phoneNumber = req.body.phoneNumber;
? ? const unionid = req.body.unionid;

? ? // 創(chuàng)建MySQL查詢
? ? const sqlStr = 'SELECT * FROM wxusers WHERE openid = ?';
? ? //res.json({openid: openid});
? ? console.log(`查詢到了`)
? ? // 查詢數(shù)據(jù)庫
? ? sql.query(sqlStr, [openid], function(err, result) {
? ? ? ? if (err) {
? ? ? ? ? ? console.error(err);
? ? ? ? ? ? res.status(500).send('Database error');
? ? ? ? } else {
? ? ? ? ? ? // 檢查是否有匹配的openId
? ? ? ? ? ? if (result.length > 0) {
? ? ? ? ? ? ? ? const sqlStr = `UPDATE wxusers SET avatarUrl = '${avatarUrl}' WHERE openid = '${openid}'`;
? ? ? ? ? ? ? ? sql.query(sqlStr, (err, result) => {
? ? ? ? ? ? ? ? ? ? if (err) throw err;
? ? ? ? ? ? ? ? ? ? res.send('Data updated in the database.');
? ? ? ? ? ? ? ? });
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? const sqlStr = `INSERT INTO wxusers (openid, avatarUrl, nickname, phoneNumber, unionid) VALUES ('${openid}','${avatarUrl}', 'default_user', 'default_user', 'default_user')`;
? ? ? ? ? ? ? ? sql.query(sqlStr, [openid, avatarUrl, nickname, phoneNumber, unionid], (err, result) => {
? ? ? ? ? ? ? ? ? ? if (err) throw err;
? ? ? ? ? ? ? ? ? ? res.send('Data inserted into the database.');
? ? ? ? ? ? ? ? });
? ? ? ? ? ? }
? ? ? ? }
? ? });

});

module.exports = router;

接下來是第二次修改的,微信開發(fā)者工具在本地測試沒有問題:

微信小程序通過授權(quán)獲取用戶頭像的wxml代碼如下:

? ? <view data-weui-theme="{{theme}}" class="view-2">
? ?<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar" ?value='{{avatarUrl}}'>
? ?<view>
? ? <image class="avatar" src="{{avatarUrl}}"></image>
? ?</view>
? </button>


對應(yīng)的微信小程序TS代碼如下:

onChooseAvatar(e) {
? ? const { avatarUrl } = e.detail
? ? this.setData({
? ? avatarUrl,
? ? })
? ? console.log("獲取到用戶頭像avatarUrl:"+ avatarUrl)
? ? // 下載頭像圖片
? ? wx.downloadFile({
? ? url: avatarUrl,
? ? success(res) {
? ? if (res.statusCode === 200) {
? ? console.log('download success');
? ? const tempFilePath = res.tempFilePath
? ? console.log("獲取到用戶頭像tempFilePath:"+ tempFilePath)
? ? // 上傳下載的圖片
? ? wx.uploadFile({
? ? url: config.apiUrl + '/api/avatarUrl',
? ? filePath: tempFilePath,
? ? name: 'file',
? ? formData: {
? ? 'openid': wx.getStorageSync('openid')
? ? },
? ? success(res) {
? ? const data = JSON.parse(res.data)
? ? console.log('upload success');
? ? console.log("成功獲取到用戶頭像存入數(shù)據(jù)庫:", data.path);
? ? },
? ? fail(res) {
? ? console.log('upload fail');
? ? }
? ? })
? ? }
? ? }
? ? })
? ? },


以nodejs為后臺保存頭像到mysql數(shù)據(jù)庫的路由代碼如下:

const express = require('express');
const router = express.Router();
const sql = require('../sql');
const multer = require('multer');

// 設(shè)置文件上傳的目錄
const storage = multer.diskStorage({
? ? destination: function(req, file, cb) {
? ? ? ? cb(null, './public/upload')
? ? },
? ? filename: function(req, file, cb) {
? ? ? ? cb(null, Date.now() + '-' + file.originalname)
? ? }
})

const upload = multer({ storage: storage })

router.post('/avatarUrl', upload.single('file'), (req, res) => {
? ? const openid = req.body.openid;
? ? const avatarUrl = '/upload/' + req.file.filename;

// 創(chuàng)建MySQL查詢
? ? const sqlStr = 'SELECT * FROM wxusers WHERE openid = ?';

// 查詢數(shù)據(jù)庫
? ? sql.query(sqlStr, [openid], function(err, result) {
? ? ? ? if (err) {
? ? ? ? ? ? console.error(err);
? ? ? ? ? ? res.status(500).send('Database error');
? ? ? ? } else {
// 檢查是否有匹配的openId
? ? ? ? ? ? if (result.length > 0) {
? ? ? ? ? ? ? ? const sqlStr = `UPDATE wxusers SET avatarUrl = '${avatarUrl}' WHERE openid = '${openid}'`;
? ? ? ? ? ? ? ? sql.query(sqlStr, (err, result) => {
? ? ? ? ? ? ? ? ? ? if (err) throw err;
? ? ? ? ? ? ? ? ? ? res.json({ path: avatarUrl });
? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? console.log("更新新路徑", avatarUrl);
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? const sqlStr = `INSERT INTO wxusers (openid, avatarUrl) VALUES ('${openid}','${avatarUrl}')`;
? ? ? ? ? ? ? ? sql.query(sqlStr, [openid, avatarUrl], (err, result) => {
? ? ? ? ? ? ? ? ? ? if (err) throw err;
? ? ? ? ? ? ? ? ? ? res.json({ path: avatarUrl });
? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? console.log("插入新路徑", avatarUrl);
? ? ? ? ? ? }
? ? ? ? }
? ? });
});

module.exports = router;

本地運(yùn)行后微信開發(fā)者顯示下面的內(nèi)容:

頭像存入數(shù)據(jù)庫,微信小程序,服務(wù)器,數(shù)據(jù)庫,node.js,小程序,notepad++

?然后將服務(wù)搬到服務(wù)器上運(yùn)行之后,開始報(bào)錯:

頭像存入數(shù)據(jù)庫,微信小程序,服務(wù)器,數(shù)據(jù)庫,node.js,小程序,notepad++

?目前解決辦法我也已經(jīng)找到了:點(diǎn)擊閱讀完美解決方案http://t.csdn.cn/nI1pI文章來源地址http://www.zghlxwxcb.cn/news/detail-621329.html

到了這里,關(guān)于微信小程序上傳頭像的臨時路徑,持久化保存到服務(wù)器與數(shù)據(jù)庫(nodejs后臺開發(fā))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序新版頭像昵稱上傳

    微信小程序新版頭像昵稱上傳

    官方文檔:小程序用戶頭像昵稱獲取規(guī)則調(diào)整公告 | 微信開放社區(qū) 頭像昵稱填寫 | 微信開放文檔 為我們小程序?qū)懥艘粋€頭像昵稱上傳的組件總結(jié)了下 需要注意的點(diǎn): 我們后端服務(wù)器存的老用戶的頭像昵稱有的是:之前早版本( wx.getUserInfo )能獲取到的用戶真實(shí)微信頭像昵

    2024年02月11日
    瀏覽(29)
  • 微信小程序頭像上傳(二---完結(jié))

    微信小程序頭像上傳(二---完結(jié))

    效果展示: (1)? : \\\"點(diǎn)擊登錄\\\" (2)? : 登錄后,會顯示默認(rèn)的微信頭像與昵稱 ? (3)? :? 再次點(diǎn)擊頭像可以選擇一張圖片當(dāng)頭像,( 真實(shí)環(huán)境可以選擇相冊圖片或拍攝一張 ) ? ? (1)? : 確認(rèn)選擇的圖片后會更新到頁面中,并且下次登錄也會顯示上一步中選擇的圖片,而不會選擇微信

    2024年02月11日
    瀏覽(24)
  • uniapp微信小程序開發(fā)踩坑日記:獲取用戶頭像并持久化存儲到后端服務(wù)器

    uniapp微信小程序開發(fā)踩坑日記:獲取用戶頭像并持久化存儲到后端服務(wù)器

    原來獲取用戶頭像和昵稱調(diào)用的是uni.getUserInfo(OBJECT)接口,但是2021年4月28日24時后發(fā)布的小程序新版本,無法通過uni.getUserInfo與button open-type=\\\"getUserInfo\\\"/獲取用戶個人信息(頭像、昵稱、性別與地區(qū)) 詳細(xì)情況見官方文檔:小程序登錄、用戶信息相關(guān)接口調(diào)整說明 | 微信開放社

    2024年04月14日
    瀏覽(27)
  • 微信小程序個人資料(修改頭像,上傳圖片和拍照)

    微信小程序個人資料(修改頭像,上傳圖片和拍照)

    首先是wxml 開始他的js,有兩種方法,第一張自己寫的js 第二種微信自帶的wxml ? wxss

    2024年04月26日
    瀏覽(96)
  • 【Unity】數(shù)據(jù)持久化路徑Application.persistentDataPath

    【Unity】數(shù)據(jù)持久化路徑Application.persistentDataPath

    今天突然想到這個路徑Application.persistentDataPath,熱更的重要路徑,該文件夾可讀可寫,在移動端唯一一個可讀寫操作的文件夾。 移動端可以將本地的資源(資源MD5值配置表)等一些文件放到StreamingAssets文件夾下,通過Copy到persistentDataPath下與服務(wù)器的版本文件配置表作比對,

    2023年04月10日
    瀏覽(26)
  • 修復(fù)微信小程序獲取頭像的bug,微信小程序新版頭像API使用

    修復(fù)微信小程序獲取頭像的bug,微信小程序新版頭像API使用

    接著我之前發(fā)布的一篇文章:微信小程序上傳頭像的臨時路徑,持久化保存到服務(wù)器與數(shù)據(jù)庫(nodejs后臺開發(fā))_盒子貓君的博客-CSDN博客 今天我就來解決掉之前的問題吧! 從之前的后臺報(bào)錯來看,獲取到的tempFilePath值和avatarUrl的值相同,都是http://tmp,不過頭像都已經(jīng)上傳成

    2024年02月07日
    瀏覽(102)
  • 最新微信小程序獲取頭像昵稱,直接用,uniapp獲取微信小程序頭像昵稱

    最新微信小程序獲取頭像昵稱,直接用,uniapp獲取微信小程序頭像昵稱

    微信小程序獲取用戶頭像和昵稱一個開放接口是wx.getUserInfo,2021年4月5日被廢棄,原因是很多開發(fā)者在打開小程序時就通過組件方式喚起getUserInfo彈窗,如果用戶點(diǎn)擊拒絕,無法使用小程序,這種做法打斷了用戶正常使用小程序的流程,同時也不利于小程序獲取新用戶,后面新

    2024年02月11日
    瀏覽(95)
  • 修復(fù)微信小程序不能獲取頭像和昵稱的bug,微信小程序新版頭像昵稱API使用

    修復(fù)微信小程序不能獲取頭像和昵稱的bug,微信小程序新版頭像昵稱API使用

    大廠程序員都是有KPI績效考核的,所以他們不能閑著,每天要想著怎么優(yōu)化程序代碼、怎么滿足奇葩用戶的需求,所以苦逼了我們這些小公司程序員,微信一個小小的API接口改動,可能就讓一個小公司因此損失慘重,甚至直接面臨倒閉。鵝廠可不管你這些小公司的死活,畢竟

    2024年02月11日
    瀏覽(294)
  • Vue3.0跨端Web SDK訪問微信小程序云儲存,文件上傳路徑不存在/文件受損無法顯示問題(已解決)

    Vue3.0跨端Web SDK訪問微信小程序云儲存,文件上傳路徑不存在/文件受損無法顯示問題(已解決)

    需要vue3.0作為pc端的后臺管理來連接微信小程序客戶端 需要Web SDK的引入,實(shí)現(xiàn)vue3.0接入云開發(fā)環(huán)境 需要以云環(huán)境作為線上服務(wù)器,將vue3.0上傳的本地文件通過云環(huán)境進(jìn)入云儲存,并將文件在云端生成云端快捷訪問路徑及http/https路徑(公網(wǎng)路徑) 修改云端儲存的權(quán)限代碼:

    2024年02月08日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包