小程序圖片上傳主要代碼拱绑,多張/單張上傳综芥,刪除和預(yù)覽

簡(jiǎn)介:本章主要記錄微信小程序圖片上傳功能的實(shí)現(xiàn)過程,以及開發(fā)過程中遇到的問題(菜鳥日記)猎拨,主要分為:4個(gè)part
p1:wx.chooseImage 從本地相冊(cè)選擇圖片或使用相機(jī)拍照
p2:wx.uploadFile 將本地資源上傳到服務(wù)器
p3:提交圖片鏈接(有時(shí)候包含其他頁面參數(shù))
p4:附加圖片預(yù)覽和長(zhǎng)按刪除


步驟一:wx.chooseImage

圖片上傳第一步首先是選擇圖片膀藐,微信小程序?yàn)槲覀兲峁┝藈x.chooseImage方法,活不多說先上文檔示例(點(diǎn)我查看官方文檔):

文檔

文檔里有所有參數(shù)的對(duì)應(yīng)解釋红省,在這里我只介紹常用的幾個(gè)额各,大家對(duì)照?qǐng)D片來看比較清晰明了
1. count:每次最多可以選擇的圖片張數(shù),默認(rèn)為9張
2. sizeType:所選的圖片的尺寸—>original(原圖)—>compressed(壓縮圖)
3. sourceType:圖片來源—>album(從相冊(cè)選圖)—>camera(使用相機(jī)拍照)
4. res.tempFilePaths:文件本地路徑
5. res.tempFiles:圖片的本地臨時(shí)文件列表吧恃,包含圖片路徑path和圖片大小size虾啦,單位為B
在success回調(diào)里就可以執(zhí)行我們的下一步啦!

步驟二:wx.uploadFile

這一步主要是在拿到圖片的本地臨時(shí)路徑后傳給后臺(tái)痕寓,獲取到新的圖片地址(點(diǎn)我查看官方文檔

文檔

還是先來看幾個(gè)參數(shù)說明:
1. url:服務(wù)器地址傲醉,就是傳圖片的接口
2. filePath:要上傳文件資源的路徑 (本地路徑),不明白的童鞋往上翻呻率,看tempFilePaths硬毕,tempFiles
3. name:文件對(duì)應(yīng)的 key,也就是后臺(tái)接收?qǐng)D片路徑的字段名
4. formData:HTTP 請(qǐng)求中其他額外的form data
在實(shí)際項(xiàng)目中我們會(huì)涉及到多張圖片上傳礼仗,網(wǎng)上已經(jīng)有大神用遞歸的方法對(duì)上傳做了封裝吐咳,我就不獻(xiàn)丑了,直接把鏈接粘在這里:小程序wx.uploadFile上傳問題
在使用這個(gè)方法的過程中我遇到了一個(gè)問題元践,就是當(dāng)我上傳多張的時(shí)候總是只顯示一張圖片挪丢,這是怎么回事呢?在我一番查找后發(fā)現(xiàn)原來是因?yàn)槊看螆?zhí)行上傳方法都會(huì)創(chuàng)建新的Promise對(duì)象卢厂,導(dǎo)致我們的數(shù)據(jù)不能連接起來乾蓬,原文我找不到了,給大家貼個(gè)我的代碼好了

uploadModal(filePaths, successUp, failUp, i, length) {
    let that = this;
    let upload = new Promise(function (resolve, reject) {
    function timeout(filePaths, successUp, failUp, i, length) {
          wx.uploadFile({url: xxxx,//(填自己的接口地址就可以)
          filePath: filePaths[i],
          name: 'multipartFile',
          formData: {},
          success: (res) => {
            successUp++;
            var data = JSON.parse(res.data);
          },
          fail: (res) => {
            failUp++;
          },
          complete: () => {
            i++;
            if (i == length) {
              wx.showToast({
                title: successUp + '張上傳成功,' + failUp + '張上傳失斏骱恪任内!',
                icon: 'none',
                duration: 2000,
                mask: true
              })
              resolve();
            } else { //遞歸調(diào)用uploadDIY函數(shù)
              timeout(filePaths, successUp, failUp, i, length);
            }
          },
        });
      };
      timeout(filePaths, successUp, failUp, i, length)
    })
    return upload;
  },

在wx.uploadFile外層套了一個(gè)timeout方法撵渡,遞歸調(diào)用的時(shí)候就調(diào)它好啦,成功解決死嗦!感謝那位不知名的大神

步驟三:提交圖片鏈接

因?yàn)槲以谔峤粓D片的時(shí)候也要提交一些別的參數(shù)趋距,所以我就寫了個(gè)一個(gè)submit方法來處理圖片鏈接和其他params,我用wx.request方法來提交越除,這個(gè)大家都懂节腐,我就不廢話了

附加小方法:預(yù)覽和刪除

圖片預(yù)覽(點(diǎn)我查看官方文檔

previewImg(e) {
    let url = e.currentTarget.dataset.url;
    wx.previewImage({
      current: url,
      urls: this.data.imgs
    })
},

長(zhǎng)按刪除

//js部分
deleteImage(e) {
    let that = this;
    let imgs = that.data.imgs;
    let index = e.currentTarget.dataset.index;
    wx.showModal({
      title: '提示',
      content: '確定要?jiǎng)h除此圖片嗎?',
      success: function (res) {
        if (res.confirm) {
          imgs.splice(index, 1);
        }
        that.setData({
          imgs
        });
     }
  })
},

<!-- 圖片是循環(huán)出來的所以寫了item -->
<image src="{{item}}"  bindtap="previewImg" bindlongpress="deleteImage" data-url="{{item}}" data-index="{{index}}"></image>

完結(jié)~~~
第一次寫文章求鼓勵(lì)摘盆!喜歡的幫我點(diǎn)個(gè)贊哦翼雀,不明白的地方可以留言,我寫的不對(duì)的地方請(qǐng)大佬們指教孩擂,我會(huì)改的狼渊,畢竟我只是個(gè)小菜鳥(掩面)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末类垦,一起剝皮案震驚了整個(gè)濱河市狈邑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蚤认,老刑警劉巖米苹,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異砰琢,居然都是意外死亡驱入,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門氯析,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莺褒,你說我怎么就攤上這事掩缓。” “怎么了遵岩?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵你辣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我尘执,道長(zhǎng)舍哄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任誊锭,我火速辦了婚禮表悬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丧靡。我一直安慰自己蟆沫,他們只是感情好籽暇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饭庞,像睡著了一般戒悠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舟山,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天绸狐,我揣著相機(jī)與錄音,去河邊找鬼累盗。 笑死寒矿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幅骄。 我是一名探鬼主播劫窒,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拆座!你這毒婦竟也來了主巍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤挪凑,失蹤者是張志新(化名)和其女友劉穎孕索,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躏碳,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搞旭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菇绵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肄渗。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖咬最,靈堂內(nèi)的尸體忽然破棺而出翎嫡,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站歧寺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏圈驼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一望几、第九天 我趴在偏房一處隱蔽的房頂上張望绩脆。 院中可真熱鬧,春花似錦、人聲如沸衙伶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矢劲。三九已至赦拘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芬沉,已是汗流浹背躺同。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丸逸,地道東北人蹋艺。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像黄刚,于是被迫代替她去往敵國(guó)和親捎谨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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