uniapp上傳本地圖片以及以二進(jìn)制流的方式上傳
1、上傳本地圖片
1.1 uni.chooseImage
uni.chooseImage(OBJECT)從本地相冊(cè)選擇圖片或使用相機(jī)拍照。
1.2 uni.uploadFile
uni.uploadFile(OBJECT)將本地資源上傳到開發(fā)者服務(wù)器,客戶端發(fā)起一個(gè)
POST請(qǐng)求,其中content-type為multipart/form-data。
如頁(yè)面通過 uni.chooseImage 等接口獲取到一個(gè)本地資源的臨時(shí)文件路徑后,可通過此接口將本地資源上傳到指定服務(wù)器。
代碼:
export default {
methods: {
/**
* 從本地相冊(cè)選擇圖片
*/
handleChooseImage() {
uni.chooseImage({
count: 3,
sourceType: ['album'],
success: res => {
let filePath = res.tempFilePaths[0];
// 上傳圖片
this.handleUploadFile('/upload', filePath);
}
});
},
/**
* 上傳
* @param {String} url 接口地址
* @param {String} filePath 要上傳文件資源的路徑
* @param {Object} data 接口的一些參數(shù)
*/
handleUploadFile(url, filePath, data) {
uni.uploadFile({
url: url,
filePath,
header: {
"authorization": uni.getStorageSync('token')
},
formData: data,
success: (uploadFileRes) => {
console.log(uploadFileRes, '上傳成功')
},
fail: (res) => {
console.log(res, '上傳失敗')
}
})
}
}
}2、以二進(jìn)制流的方式上傳
export default {
methods: {
handleUpload() {
// 獲取二進(jìn)制流(暫時(shí)用base64轉(zhuǎn)二進(jìn)制流測(cè)試)
let dataurl =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC';
let blob = this.dataURLtoBlob(dataurl);
this.handleUploadFile('upload', blob)
},
/**
* Base64字符串轉(zhuǎn)二進(jìn)制流
* @param {String} dataurl Base64字符串(字符串包含Data URI scheme,例如:data:image/png;base64, )
*/
dataURLtoBlob(dataurl) {
var arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {
type: mime,
});
},
/**
* 上傳
* @param {String} url 接口地址
* @param {Object} file 二進(jìn)制流
* @param {Object} data 接口的一些其他的參數(shù)
*/
handleUploadFile(url, file, data) {
uni.uploadFile({
url: url,
file,
header: {
"authorization": uni.getStorageSync('token')
},
formData: data,
success: (uploadFileRes) => {
console.log(uploadFileRes, '上傳成功')
},
fail: (res) => {
console.log(res, '上傳失敗')
}
})
}
}
}總結(jié)
到此這篇關(guān)于uniapp上傳本地圖片以及以二進(jìn)制流的方式上傳的文章就介紹到這了,更多相關(guān)uniapp上傳本地圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue3中el-uplod結(jié)合ts實(shí)現(xiàn)圖片粘貼上傳
- Vue3+Koa2實(shí)現(xiàn)圖片上傳功能的示例代碼
- Vue3?+?elementplus實(shí)現(xiàn)表單驗(yàn)證+上傳圖片+?防止表單重復(fù)提交功能
- Vue3?使用v-md-editor如何動(dòng)態(tài)上傳圖片的方法實(shí)現(xiàn)
- vue3.0?移動(dòng)端二次封裝van-uploader實(shí)現(xiàn)上傳圖片(vant組件庫(kù))
- 利用Vue3和element-plus實(shí)現(xiàn)圖片上傳組件
- uniapp上傳圖片和上傳視頻的實(shí)現(xiàn)方法
- uniapp小程序上傳圖片功能的實(shí)現(xiàn)
- uniapp+vue3實(shí)現(xiàn)上傳圖片組件封裝功能
相關(guān)文章
通過判斷JavaScript的版本實(shí)現(xiàn)執(zhí)行不同的代碼
有時(shí)候需要根據(jù)JavaScript的版本來分別執(zhí)行一些代碼,那么就可能需要用到下面的代碼.2010-05-05
微信小程序?qū)崿F(xiàn)錄音時(shí)的麥克風(fēng)動(dòng)畫效果實(shí)例
這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)錄音時(shí)的麥克風(fēng)動(dòng)畫效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
微信小程序8種數(shù)據(jù)通信的方式小結(jié)
這篇文章主要介紹了微信小程序8種數(shù)據(jù)通信的方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
layer.msg()去掉默認(rèn)時(shí)間,實(shí)現(xiàn)手動(dòng)關(guān)閉的方法
今天小編就為大家分享一篇layer.msg()去掉默認(rèn)時(shí)間,實(shí)現(xiàn)手動(dòng)關(guān)閉的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
24行JavaScript代碼實(shí)現(xiàn)Redux的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于如何利用24行JavaScript代碼實(shí)現(xiàn)Redux的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
js實(shí)現(xiàn)拾色器插件(ColorPicker)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拾色器插件ColorPicker,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
Javascript es7中比較實(shí)用的兩個(gè)方法示例
這篇文章主要給大家分享了關(guān)于Javascript es7中比較實(shí)用的兩個(gè)方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07

