微信小程序?qū)崿F(xiàn)圖片上傳功能的思路與源碼
前言
手機(jī)上傳圖片的功能大家一定都用過(guò)吧,今天教你用微信小程序?qū)崿F(xiàn)這個(gè)小功能。
實(shí)現(xiàn)效果如下:
實(shí)現(xiàn)思路:
首先我們需要定義一個(gè)存放圖片的數(shù)組,通過(guò)方法拿取圖片的詳細(xì)信息,然后調(diào)用微信小程序的 wx.uploadFile
方法將拿到的圖片信息添加到定義好的圖片數(shù)組中即可;刪除圖片我們只需要拿到存放圖片的數(shù)組再通過(guò)splice方法刪除。
wx.uploadFile(Object object)方法的參數(shù):
屬性 | 類型 | 必填項(xiàng) | 說(shuō)明 |
---|---|---|---|
url | string | 是 | 開(kāi)發(fā)者服務(wù)器地址 |
filePath | string | 是 | 要上傳文件資源的路徑 (本地路徑) |
name | string | 是 | 文件對(duì)應(yīng)的 key,開(kāi)發(fā)者在服務(wù)端可以通過(guò)這個(gè) key 獲取文件的二進(jìn)制內(nèi)容 |
header | Object | 否 | HTTP 請(qǐng)求 Header,Header 中不能設(shè)置 Referer |
formData | Object | 否 | HTTP 請(qǐng)求中其他額外的 form data |
timeout | function | 否 | 超時(shí)時(shí)間,單位為毫秒 |
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) |
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) |
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行) |
源碼文件
wxml文件
<view class="imgBox"> <view><text>車輛照片</text></view> <view class="imgContant"> <van-uploader accept="image" max-count="1" bind:after-read="afterRead" bind:delete="deleteClick" file-list="{{ fileList }}" /> </view> </view>
js文件
//獲取應(yīng)用實(shí)例 var app = getApp(); Page({ data: { fileList: [], //圖片存放的數(shù)組 }, // 刪除照片 deleteClick(event) { var imgData = this.data.fileList; // 通過(guò)splice方法刪除圖片 imgData.splice(event.detail.index, 1); // 更新圖片數(shù)組 this.setData({ fileList: imgData }) }, // 車輛照片 afterRead(event) { // loading加載 wx.showLoading({ title: '上傳中...' }); const {file} = event.detail;//獲取圖片詳細(xì)信息 let that = this;//防止this指向問(wèn)題 // 設(shè)置請(qǐng)求頭,根據(jù)項(xiàng)目需求變換 let Authorization = wx.getStorageSync('key') let headers = { 'content-type': '', 'client_id': 'webApp', 'client_secret': '123456', } if (Authorization) { headers.Authorization = 'Bearer ' + Authorization } // 調(diào)用wx.uploadFile上傳圖片方法 wx.uploadFile({ url: "http://192.168.0.11:8888/api-xian/api-zjmj/zjmj/hmcl/uploadFile", method: 'POST', header: headers, filePath: file.url, name: 'file', formData: { user: 'test' }, // 成功回調(diào) success(res) { // JSON.parse()方法是將JSON格式字符串轉(zhuǎn)換為js對(duì)象 var result = JSON.parse(res.data); // 上傳完成需要更新 fileList const {fileList = []} = that.data; // 將圖片信息添加到fileList數(shù)字中 fileList.push({ ...file, url: result.data }); // 更新存放圖片的數(shù)組 that.setData({ fileList }); wx.hideLoading();//停止loading }, }); }, })
wxss文件
page { background: #EFF4FF; } .imgBox { font-size: 28rpx; margin: 3%; background: white; padding: 30rpx; border-radius: 30rpx; display: flex; align-items: center; } .imgContant { margin-left: 40rpx; }
至此,這個(gè)小功能就實(shí)現(xiàn)啦!
總結(jié)
到此這篇關(guān)于微信小程序?qū)崿F(xiàn)圖片上傳功能的文章就介紹到這了,更多相關(guān)微信小程序圖片上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實(shí)現(xiàn)函數(shù)返回多個(gè)值的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)函數(shù)返回多個(gè)值的方法,涉及javascript字典類型的使用技巧,需要的朋友可以參考下2015-06-06一些常用的JS功能函數(shù)(2009-06-04更新)
將 ClientMentInfo類改成了兼容IE6,IE7,IE8,Vista,Windows 7和Firefox2009-06-06注意 JavaScript 中 RegExp 對(duì)象的 test 方法
注意 JavaScript 中 RegExp 對(duì)象的 test 方法...2007-01-01基于RequireJS和JQuery的模塊化編程——常見(jiàn)問(wèn)題全面解析
下面小編就為大家?guī)?lái)一篇基于RequireJS和JQuery的模塊化編程——常見(jiàn)問(wèn)題全面解析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-04-04關(guān)于uniapp微信小程序左上角返回按鈕的監(jiān)聽(tīng)詳解
uniapp是一個(gè)支持多端的技術(shù),因此它是兼容性比較強(qiáng)的,而且速度也很快,下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序左上角返回按鈕監(jiān)聽(tīng)的相關(guān)資料,需要的朋友可以參考下2022-04-04