「小程序JAVA實(shí)戰(zhàn)」小程序頭像圖片上傳(中)(44)

原創(chuàng)文章者春,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會盏触,謝謝愉耙!
原文鏈接地址:「小程序JAVA實(shí)戰(zhàn)」小程序頭像圖片上傳(中)(44)

用戶可以上傳了和用戶的face更新到數(shù)據(jù)庫贮尉,接下來我們需要對圖片進(jìn)行展示,tomcat本身就提供了虛擬目錄的概念朴沿,直接把某個路徑的圖片映射到web服務(wù)器作為資源路徑猜谚。其實(shí)在springboot可以通過代碼的方式來進(jìn)行映射。源碼:https://github.com/limingios/wxProgram.git 中wx-springboot 和 No.15

spring boot 映射路徑的設(shè)置

  • api 中新建類
package com.idig8;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
    @Value("${server.face.path}")
    private String fileSpace;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //資源的路徑.swagger2的資源.所在的目錄赌渣,
        registry.addResourceHandler("/**")
        .addResourceLocations("classpath:/META-INF/resources/")
        .addResourceLocations("file:"+fileSpace);
        
    }

}

小程序的圖片展示

里面調(diào)用了wx api的插件魏铅,所以直接用this.setData就會報錯。VM708:1 thirdScriptError
Cannot read property 'setData' of null;at pages/mine/mine onShow function;at api uploadFile success callback function
TypeError: Cannot read property 'setData' of null 需要先將this復(fù)制給一個變量坚芜,然后通過變量.setData

// pages/mine/mine.js
const app = getApp()
Page({

  /**
   * 頁面的初始數(shù)據(jù)
   */
  data: {
    faceUrl: "../../resource/images/noneface.png",
    nickname: "昵稱",
    fansCounts: 0,
    followCounts: 0,
    receiveLikeCounts: 0,
  },
  /**
   * 用戶注銷
   */
  logout:function(e){
    var user = app.userInfo;
    wx.showLoading({
      title: '正在注銷中览芳。。鸿竖。'
    });
    wx.request({
      url: app.serverUrl + "/logout?userId="+user.id,
      method: "POST",
      header: {
        'content-type': 'application/json' // 默認(rèn)值
      },
      success: function (res) {
        console.log(res.data);
        var status = res.data.status;
        wx.hideLoading();
        if (status == 200) {
          wx.showToast({
            title: "用戶注銷成功~沧竟!",
            icon: 'none',
            duration: 3000
          })
          app.userInfo = null;
          wx.redirectTo({
            url: '../userRegister/userRegister',
          })

        } else if (status == 500) {
          wx.showToast({
            title: res.data.msg,
            icon: 'none',
            duration: 3000
          })
        }
      }
    })
  },
  /**
   * 頭像上傳
   */
  uploadFace:function(e){
    var user = app.userInfo;
    var me = this;
    wx.chooseImage({
      count: 1, // 默認(rèn)9
      sizeType: ['compressed'], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
      sourceType: ['album'], // 可以指定來源是相冊還是相機(jī)缚忧,默認(rèn)二者都有
      success: function (res) {
        // 返回選定照片的本地文件路徑列表悟泵,tempFilePath可以作為img標(biāo)簽的src屬性顯示圖片
        var tempFilePaths = res.tempFilePaths
        if (tempFilePaths.length>0){
          console.log(tempFilePaths[0]);

          wx.showLoading({
            title: '正在加載中。闪水。糕非。'
          });
          wx.chooseImage({
            success: function (res) {
              var tempFilePaths = res.tempFilePaths
              wx.uploadFile({
                url: app.serverUrl + "/user/uploadFace?userId=" + user.id, //僅為示例,非真實(shí)的接口地址
                filePath: tempFilePaths[0],
                name: 'file',
                success: function (res) {
                  var data = JSON.parse(res.data);
                  console.log(data);
                   wx.hideLoading();
                  if (data.status == 200) {
                    wx.showToast({
                      title: "用戶上傳成功~!",
                      icon: 'none',
                      duration: 3000
                    })
                    me.setData({
                      faceUrl: app.serverUrl+data.data
                    })
                  

                  } else if (data.status == 500) {
                    wx.showToast({
                      title: data.msg,
                      icon: 'none',
                      duration: 3000
                    })
                  }
                }
              })
            }
          })
        }
       
      }
    })
  },
  /**
   * 生命周期函數(shù)--監(jiān)聽頁面加載
   */
  onLoad: function (options) {
  
  },

  /**
   * 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函數(shù)--監(jiān)聽頁面顯示
   */
  onShow: function () {
  
  },

  /**
   * 生命周期函數(shù)--監(jiān)聽頁面隱藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函數(shù)--監(jiān)聽頁面卸載
   */
  onUnload: function () {
  
  },

  /**
   * 頁面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 頁面上拉觸底事件的處理函數(shù)
   */
  onReachBottom: function () {
  
  },

  /**
   * 用戶點(diǎn)擊右上角分享
   */
  onShareAppMessage: function () {
  
  }
})

手機(jī)端查看效果

  • 點(diǎn)擊手機(jī)預(yù)覽
  • 手機(jī)掃描朽肥,進(jìn)行登錄

但是始終無法登錄

  • 在手機(jī)上如何像工具一樣正常登錄呢禁筏?
  1. 手機(jī)app 和 后臺 在同一個網(wǎng)段,也就是同一個wifi
  2. 打開調(diào)試模式鞠呈,重啟登錄小程序
  3. 還有個不在同一個wifi的話,可以通過內(nèi)網(wǎng)穿透的方式右钾,之前說過蚁吝,但是app.js里面設(shè)置下內(nèi)網(wǎng)穿透的ip

PS:這次試用itools的方式在手機(jī)也演示了如何進(jìn)行圖片的選擇和上傳。wx的插件做的很棒舀射,直接引用不會存在各種問題窘茁。穩(wěn)~!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脆烟,一起剝皮案震驚了整個濱河市山林,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邢羔,老刑警劉巖驼抹,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拜鹤,居然都是意外死亡框冀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門敏簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來明也,“玉大人,你說我怎么就攤上這事惯裕∥率” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵蜻势,是天一觀的道長撑刺。 經(jīng)常有香客問我,道長握玛,這世上最難降的妖魔是什么猜煮? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮败许,結(jié)果婚禮上王带,老公的妹妹穿的比我還像新娘。我一直安慰自己市殷,他們只是感情好愕撰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般搞挣。 火紅的嫁衣襯著肌膚如雪带迟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天囱桨,我揣著相機(jī)與錄音仓犬,去河邊找鬼。 笑死舍肠,一個胖子當(dāng)著我的面吹牛搀继,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翠语,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼叽躯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肌括?” 一聲冷哼從身側(cè)響起点骑,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谍夭,沒想到半個月后黑滴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡紧索,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年跷跪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齐板。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡吵瞻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甘磨,到底是詐尸還是另有隱情橡羞,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布济舆,位于F島的核電站卿泽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滋觉。R本人自食惡果不足惜签夭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椎侠。 院中可真熱鬧第租,春花似錦、人聲如沸我纪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至趟据,卻和暖如春券犁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汹碱。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工粘衬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咳促。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓稚新,卻偏偏與公主長得像,于是被迫代替她去往敵國和親等缀。 傳聞我的和親對象是個殘疾皇子枷莉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 給提問的開發(fā)者的建議:提問之前先查詢 文檔娇昙、通過社區(qū)右上角搜索搜索已經(jīng)存在的問題尺迂。 寫一個簡明扼要的標(biāo)題,并且...
    極樂叔閱讀 13,460評論 0 3
  • 因新工作主要負(fù)責(zé)微信小程序這一塊冒掌,最近的重心就移到這一塊噪裕,該博客是對微信小程序整體的整理歸納以及標(biāo)明一些細(xì)節(jié)點(diǎn),初...
    majun00閱讀 7,348評論 0 9
  • 0股毫、雜記 0.1膳音、在實(shí)際的開發(fā)中,圖片資源不會存儲在小程序的目錄中铃诬,因?yàn)樾〕绦虻拇笮〔荒艹^1MB(現(xiàn)在改為2M)...
    it筱竹閱讀 5,351評論 0 10
  • 小程序面試題 小程序授權(quán)登錄流程 0祭陷、如何獲得用戶信息...
    X秀秀閱讀 1,817評論 0 8
  • 微信小程序在無論在功能、文檔及相關(guān)支持方面趣席,都是優(yōu)于前面幾種微信賬號類型兵志,它提供了很多原生程序才有的接口,使得我們...
    未央大佬閱讀 2,299評論 0 12