微信小程序?qū)崿F(xiàn)圖片上傳功能的思路與源碼
前言
手機(jī)上傳圖片的功能大家一定都用過吧,今天教你用微信小程序?qū)崿F(xiàn)這個(gè)小功能。
實(shí)現(xiàn)效果如下:

實(shí)現(xiàn)思路:
首先我們需要定義一個(gè)存放圖片的數(shù)組,通過方法拿取圖片的詳細(xì)信息,然后調(diào)用微信小程序的 wx.uploadFile 方法將拿到的圖片信息添加到定義好的圖片數(shù)組中即可;刪除圖片我們只需要拿到存放圖片的數(shù)組再通過splice方法刪除。
wx.uploadFile(Object object)方法的參數(shù):
| 屬性 | 類型 | 必填項(xiàng) | 說明 |
|---|---|---|---|
| url | string | 是 | 開發(fā)者服務(wù)器地址 |
| filePath | string | 是 | 要上傳文件資源的路徑 (本地路徑) |
| name | string | 是 | 文件對應(yīng)的 key,開發(fā)者在服務(wù)端可以通過這個(gè) key 獲取文件的二進(jìn)制內(nèi)容 |
| header | Object | 否 | HTTP 請求 Header,Header 中不能設(shè)置 Referer |
| formData | Object | 否 | HTTP 請求中其他額外的 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;
// 通過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指向問題
// 設(shè)置請求頭,根據(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對象
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)容請搜索腳本之家以前的文章或繼續(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 對象的 test 方法
注意 JavaScript 中 RegExp 對象的 test 方法...2007-01-01
基于RequireJS和JQuery的模塊化編程——常見問題全面解析
下面小編就為大家?guī)硪黄赗equireJS和JQuery的模塊化編程——常見問題全面解析。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-04-04
關(guān)于uniapp微信小程序左上角返回按鈕的監(jiān)聽詳解
uniapp是一個(gè)支持多端的技術(shù),因此它是兼容性比較強(qiáng)的,而且速度也很快,下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序左上角返回按鈕監(jiān)聽的相關(guān)資料,需要的朋友可以參考下2022-04-04

