uniapp上傳本地圖片以及以二進制流的方式上傳
1、上傳本地圖片
1.1 uni.chooseImage
uni.chooseImage(OBJECT)從本地相冊選擇圖片或使用相機拍照。
1.2 uni.uploadFile
uni.uploadFile(OBJECT)將本地資源上傳到開發(fā)者服務器,客戶端發(fā)起一個
POST
請求,其中content-type
為multipart/form-data
。
如頁面通過 uni.chooseImage 等接口獲取到一個本地資源的臨時文件路徑后,可通過此接口將本地資源上傳到指定服務器。
代碼:
export default { methods: { /** * 從本地相冊選擇圖片 */ 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、以二進制流的方式上傳
export default { methods: { handleUpload() { // 獲取二進制流(暫時用base64轉(zhuǎn)二進制流測試) let dataurl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC'; let blob = this.dataURLtoBlob(dataurl); this.handleUploadFile('upload', blob) }, /** * Base64字符串轉(zhuǎ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 二進制流 * @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上傳本地圖片以及以二進制流的方式上傳的文章就介紹到這了,更多相關(guān)uniapp上傳本地圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue3中el-uplod結(jié)合ts實現(xiàn)圖片粘貼上傳
- Vue3+Koa2實現(xiàn)圖片上傳功能的示例代碼
- Vue3?+?elementplus實現(xiàn)表單驗證+上傳圖片+?防止表單重復提交功能
- Vue3?使用v-md-editor如何動態(tài)上傳圖片的方法實現(xiàn)
- vue3.0?移動端二次封裝van-uploader實現(xiàn)上傳圖片(vant組件庫)
- 利用Vue3和element-plus實現(xiàn)圖片上傳組件
- uniapp上傳圖片和上傳視頻的實現(xiàn)方法
- uniapp小程序上傳圖片功能的實現(xiàn)
- uniapp+vue3實現(xiàn)上傳圖片組件封裝功能
相關(guān)文章
通過判斷JavaScript的版本實現(xiàn)執(zhí)行不同的代碼
有時候需要根據(jù)JavaScript的版本來分別執(zhí)行一些代碼,那么就可能需要用到下面的代碼.2010-05-05微信小程序?qū)崿F(xiàn)錄音時的麥克風動畫效果實例
這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)錄音時的麥克風動畫效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用微信小程序具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-05-05微信小程序8種數(shù)據(jù)通信的方式小結(jié)
這篇文章主要介紹了微信小程序8種數(shù)據(jù)通信的方式小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02layer.msg()去掉默認時間,實現(xiàn)手動關(guān)閉的方法
今天小編就為大家分享一篇layer.msg()去掉默認時間,實現(xiàn)手動關(guān)閉的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-0924行JavaScript代碼實現(xiàn)Redux的方法實例
這篇文章主要給大家介紹了關(guān)于如何利用24行JavaScript代碼實現(xiàn)Redux的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JavaScript具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-11-11