uniapp基礎(chǔ)篇之上傳圖片的實(shí)戰(zhàn)步驟
一、今日學(xué)習(xí)目標(biāo)
實(shí)現(xiàn)uniapp上傳圖片
二、實(shí)戰(zhàn)步驟
1. 了解uni.chooseImage(OBJECT)

特別說(shuō)明下crop參數(shù),是圖像裁剪的參數(shù)

// uni.chooseImage() 基本示例
uni.chooseImage({
count: 6, //默認(rèn)9
sizeType: ['original', 'compressed'], //可以指定是原圖還是壓縮圖,默認(rèn)二者都有
sourceType: ['album'], //從相冊(cè)選擇
success: function (res) {
console.log(JSON.stringify(res.tempFilePaths));
}
});
使用注意事項(xiàng):
- count 值在 H5 平臺(tái)的表現(xiàn),基于瀏覽器本身的規(guī)范。目前測(cè)試的結(jié)果來(lái)看,只能限制單選/多選,并不能限制數(shù)量。并且,在實(shí)際的手機(jī)瀏覽器很少有能夠支持多選的。
- sourceType 值在 H5 平臺(tái)根據(jù)瀏覽器的不同而表現(xiàn)不同,一般不可限制僅使用相冊(cè),部分瀏覽器也無(wú)法限制是否使用相機(jī)。
2. 了解uni.uploadFile(OBJECT)
介紹:將本地資源上傳到開(kāi)發(fā)者服務(wù)器,客戶端發(fā)起一個(gè) POST 請(qǐng)求,其中 content-type 為 multipart/form-data

// 示例代碼
uni.chooseImage({
success: (chooseImageRes) => {
const tempFilePaths = chooseImageRes.tempFilePaths;
uni.uploadFile({
url: 'https://www.example.com/upload', //僅為示例,非真實(shí)的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData: {
'user': 'test'
},
success: (uploadFileRes) => {
console.log(uploadFileRes.data);
}
});
}
});
3. 在項(xiàng)目中上傳圖片
// 項(xiàng)目實(shí)戰(zhàn)中使用
uni.chooseImage({
count: 1, // 圖片數(shù)量
sizeType: ['original', 'compressed'], //可以指定是原圖還是壓縮圖,默認(rèn)二者都有
sourceType: ['album', 'camera'], //從相冊(cè)選擇或者拍照
success: (res) => {
const tempFilePaths = res.tempFilePaths;
console.log(tempFilePaths[0])
_this.logo_list = tempFilePaths[0]
uni.uploadFile({
url: 'https://xx.com/center/group/icon', //上傳圖片api
filePath: tempFilePaths[0],
name: 'groupicon',
header:{
"Authorization": userinfo.token
},
success: (res) => {
let group = JSON.parse(res.data)
uni.showToast({
title:"上傳成功",
icon:"success"
})
}
});
}
});
圖片上傳進(jìn)度監(jiān)聽(tīng) uploadTask()
在uniapp中上傳圖片,需要uni.chooseImage()和uni.uploadFile()這兩個(gè)api結(jié)合使用,才能完成圖片的上傳,還有一個(gè)
uploadTask(),可以用來(lái)監(jiān)聽(tīng)上傳進(jìn)度變化事件,和取消上傳任務(wù)。我們根據(jù)項(xiàng)目需求去決定要不要添加這個(gè)監(jiān)聽(tīng)行為。

// 示例
uploadTask.onProgressUpdate((res) => {
console.log('上傳進(jìn)度' + res.progress);
console.log('已經(jīng)上傳的數(shù)據(jù)長(zhǎng)度' + res.totalBytesSent);
console.log('預(yù)期需要上傳的數(shù)據(jù)總長(zhǎng)度' + res.totalBytesExpectedToSend);
// 測(cè)試條件,取消上傳任務(wù)。
if (res.progress > 50) {
uploadTask.abort();
}
});
總結(jié)
到此這篇關(guān)于uniapp基礎(chǔ)篇之上傳圖片的文章就介紹到這了,更多相關(guān)uniapp上傳圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)圖片跟隨鼠標(biāo)移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)圖片跟隨鼠標(biāo)移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
js實(shí)現(xiàn)字符串的16進(jìn)制編碼不加密
關(guān)于十六進(jìn)制編碼的問(wèn)題在很多情況下都會(huì)用到,所以使用JS寫了個(gè)小程序轉(zhuǎn)換一下2014-04-04
JS實(shí)現(xiàn)Tab欄切換的兩種方式案例詳解
這篇文章主要介紹了JS實(shí)現(xiàn)Tab欄切換的兩種方式,一種是面向過(guò)程的寫法,一種是面向?qū)ο蟮膶懛ǎ疚慕o大家分享詳細(xì)案例代碼,需要的朋友可以參考下2022-08-08
JavaScript具有類似Lambda表達(dá)式編程能力的代碼(改進(jìn)版)
在之前的一篇博文中我介紹了一種方法可以讓JavaScript具有一種近似于Lambda表達(dá)式的編程能力——但是它有一些缺點(diǎn),其中妨礙它的使用的最主要的一條就是多了一層括號(hào),讓代碼變得難以閱讀。2010-09-09
利用JavaScript實(shí)現(xiàn)新聞滾動(dòng)效果(實(shí)例代碼)
這篇文章主要是對(duì)利用JavaScript實(shí)現(xiàn)新聞滾動(dòng)效果的兩種方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11
js通過(guò)iframe加載外部網(wǎng)頁(yè)的實(shí)現(xiàn)代碼
這篇文章主要介紹了js通過(guò)iframe加載外部網(wǎng)頁(yè)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
關(guān)于JS模塊化的知識(shí)點(diǎn)分享
在本篇文章里小編給大家整理的是關(guān)于JS模塊化的知識(shí)點(diǎn)分享,有需要的朋友們可以學(xué)習(xí)下。2019-10-10
記錄一次開(kāi)發(fā)微信網(wǎng)頁(yè)分享的步驟
這篇文章主要介紹了記錄一次開(kāi)發(fā)微信網(wǎng)頁(yè)分享的步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05

