国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uniapp--點(diǎn)擊上傳圖片到oss再保存數(shù)據(jù)給后端接口

這篇具有很好參考價(jià)值的文章主要介紹了uniapp--點(diǎn)擊上傳圖片到oss再保存數(shù)據(jù)給后端接口。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

項(xiàng)目采用uniapp與uview2.0組件庫(kù)

--1.0的也可以參考一下,大差不差

一、項(xiàng)目要求與樣式圖

點(diǎn)擊上傳n張圖片到oss,然后點(diǎn)擊提交給后端

uniapp--點(diǎn)擊上傳圖片到oss再保存數(shù)據(jù)給后端接口,uniapp,javascript,uniapp,vue.js,1024程序員節(jié)

二、思路

1、打開(kāi)上傳按鈕,彈出框內(nèi)出現(xiàn)上傳圖片和提交按鈕

uniapp--點(diǎn)擊上傳圖片到oss再保存數(shù)據(jù)給后端接口,uniapp,javascript,uniapp,vue.js,1024程序員節(jié)

2、點(diǎn)擊上傳圖片區(qū)域,打開(kāi)本地圖片或者調(diào)用相機(jī)。上傳到oss拿到返回的圖片url和本地的url地址。可以進(jìn)行預(yù)覽刪除。再點(diǎn)擊提交,將選取好的圖片地址發(fā)送給后端就ok了

一點(diǎn)特別注意,上傳接口的方法一定要是POST,問(wèn)就是小程序規(guī)定

三、代碼區(qū)域

<view>
		<u-upload 
				:fileList="fileList1" 
				multiple 
				@afterRead="afterRead1" 
				@delete="deletePic1" 
				name="1" 
				:maxCount="3" 
				 width="175" height="175" >
		</u-upload>
			//相關(guān)參數(shù)與公式去看view2的官方文檔我就不一一簡(jiǎn)紹了
		<view>
			<button class="Upstatebtn" type="default" @click="UpdateStatus">提交</button>
		</view>
</view>

//data參數(shù)
//fileList1: [], //上傳圖片接受數(shù)組
//img1: [], //當(dāng)前圖片數(shù)組
因?yàn)槭褂梅奖悖椭苯訌?fù)制的官網(wǎng)案例

關(guān)鍵代碼在添加圖片后上傳的兩個(gè)數(shù)組處理和本地地址還有在線圖片地址

            /**
			 * @func 刪除圖片
			 * */
			deletePic1(event) {
				this[`fileList${event.name}`].splice(event.index, 1)
				var arry = []
				this.fileList1.filter((v, i) => {
					arry.push(v.url)
				})
				this.img1 = arry
				console.log(this.img1, "1");
			},
			/**
			 * @func 新增圖片上傳  讀取后的處理函數(shù)
			 * */
			async afterRead1(event) {
				
				// 當(dāng)設(shè)置 mutiple 為 true 時(shí), file 為數(shù)組格式,否則為對(duì)象格式
				let lists = [].concat(event.file)
				console.log('list',lists);
				let fileListLen = this[`fileList${event.name}`].length
				lists.map((item) => {
					this[`fileList${event.name}`].push({
						...item,
						status: 'uploading',
						message: '上傳中'
					})
				})
				for (let i = 0; i < lists.length; i++) {
					const result = await this.uploadFilePromise1(lists[i].url)
					console.log('result是',result);
					let item = this[`fileList${event.name}`][fileListLen]
					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
						status: 'success',
						message: '',
						url: result[0]
					}))
					fileListLen++
				}
				var arry = []
				this.fileList1.filter((v, i) => {
					console.log('每一個(gè)v是什么',v);
					arry.push(v.url)
				})
				this.img1 = arry
				console.log(this.img1, "1");
			},
			/**
			 * @func 上傳圖片到oss,只提供files,后端完成上傳
			 * */
			uploadFilePromise1(url) {
				return new Promise((resolve, reject) => {
					let a = uni.uploadFile({
						url: '',//后端接口地址,后端解決了oss相關(guān)密鑰獲取
						filePath: url,
						name: 'files',
						success: (res) => {
							console.log(res.data);
//這里使用JSON.parse是數(shù)據(jù)返回的問(wèn)題需要進(jìn)行轉(zhuǎn)換,官網(wǎng)是不需要進(jìn)行轉(zhuǎn)換的,未了配合提交接口上傳一個(gè)oss返回的圖片列表數(shù)據(jù)
							console.log(JSON.parse(res.data));
							setTimeout(() => {
								resolve(JSON.parse(res.data).data) //服務(wù)器返回圖片帶域名
								//服務(wù)器返回圖片不帶域名需要自己拼接域名 否則預(yù)覽圖片無(wú)法實(shí)現(xiàn)
								// resolve('服務(wù)器域名' + JSON.parse(res.data).data)
							}, 1000)
						}
					});
				})
			},
		
			/**
			 * @func 上傳圖片地址給后臺(tái)端修改狀態(tài)
			 * */
			UpdateStatus() {
				let params = {
					id: this.Upid,
					fileList: this.img1
				}
				if (this.img1.length > 0) {
                    //后端需要的數(shù)據(jù)格式,因?yàn)槲易约貉h(huán)時(shí)候做了調(diào)整不要要這個(gè)方法了。
                    //后端要什么格式數(shù)據(jù)自己商定
					// params.fileList = this.img1.reduce((arr, cur) => arr.concat((cur), []))
				
					GetBudgetUpdate(params).then(res => {

						if (res == true) {
                        //上傳成功后清空params數(shù)據(jù),關(guān)閉彈框,刷新列表,提示成功
							this.img1 = []
							this.taskList = []
							this.page = 1
							this.getBudgetList()
							this.showUp = false
							uni.showToast({
								title: `上傳成功`,
								icon: 'none',
								duration: 2000,
							})
						}
					})
				} else {
					uni.showToast({
						title: `至少需要上傳一張交付物圖片`,
						icon: 'none',
						duration: 2000
					})
				}
			},
            /**
			* @func 上傳圖片取消,彈框關(guān)閉
			* */
			closePup(){
				this.showUp=false
				this.img1=[]
				this.fileList1=[]
				this.Upid=''
			},

四、遇到的問(wèn)題和處理

第一次使用時(shí)候遇到一個(gè)問(wèn)題是點(diǎn)擊預(yù)覽圖片失敗了,因?yàn)槲尹c(diǎn)擊圖片傳遞調(diào)用uview組件源碼方法所傳遞的值類(lèi)型不一樣? ??url: result[0]

這一行代碼卡了我這個(gè)菜雞2天,我一直認(rèn)為數(shù)據(jù)格式?jīng)]問(wèn)題,直接修改了下方的源碼判斷,,本來(lái)是url: result。直接添加了數(shù)組里的數(shù)組,然后傳值給后端img1數(shù)組時(shí)候

// params.fileList = this.img1.reduce((arr, cur) => arr.concat((cur), []))

const a = [ ["1"],["2"],["3"],["4"] ]
//變成
const b =["1","2","3","4"]
?const b = a .reduce((arr, cur) => arr.concat((cur), []));

嵌套數(shù)組合并回去了


?

for (let i = 0; i < lists.length; i++) {
					const result = await this.uploadFilePromise1(lists[i].url)
					console.log('result是',result);
					let item = this[`fileList${event.name}`][fileListLen]
					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
						status: 'success',
						message: '',


						url: result[0]



					}))
					fileListLen++
				}

?uni.PreviewImage方法需要的是這樣的數(shù)據(jù)格式,拿里面的url地址或者thumb地址

uniapp--點(diǎn)擊上傳圖片到oss再保存數(shù)據(jù)給后端接口,uniapp,javascript,uniapp,vue.js,1024程序員節(jié)

		// 預(yù)覽圖片
			onPreviewImage(item) {
				if (!item.isImage || !this.previewFullImage) return
				uni.previewImage({
					// 先f(wàn)ilter找出為圖片的item,再返回filter結(jié)果中的圖片url
					urls: this.lists.filter((item) => this.accept === 'image' || uni.$u.test.image(item.url || item.thumb)).map((item) => item.url || item.thumb),
					current: item.url || item.thumb,
					// urls: this.lists.filter((item) => this.accept === 'image' || uni.$u.test.image(item.thumb || item.url)).map((item) => item.thumb || item.url),
					current: item.thumb || item.url,
					fail() {
						uni.$u.toast('預(yù)覽圖片失敗')
					},
				});
			},

五--感謝??小李小李,知書(shū)達(dá)理的思路與寫(xiě)法

借鑒的這個(gè)文章

uniapp利用uview2.0中的uploadFile組件實(shí)現(xiàn)多張圖片的增刪預(yù)覽上傳功能-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-720974.html

到了這里,關(guān)于uniapp--點(diǎn)擊上傳圖片到oss再保存數(shù)據(jù)給后端接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot項(xiàng)目上傳圖片(本地/OSS)

    SpringBoot項(xiàng)目上傳圖片(本地/OSS)

    可參考視頻: 【springboot上傳圖片的兩種方式詳解(本地/OSS對(duì)象存儲(chǔ))】 https://www.bilibili.com/video/BV1TK411Z7ad/?share_source=copy_webvd_source=7f0416c71bcbaf44e08ad58367e3f198 視頻前十分鐘是從0開(kāi)始編寫(xiě)圖片保存到本地,可以照著視頻敲出來(lái),不想看也可以直接復(fù)制我下面的代碼 在 Resources 目

    2023年04月14日
    瀏覽(79)
  • 【Node】騰訊云OSS存儲(chǔ)上傳圖片

    【Node】騰訊云OSS存儲(chǔ)上傳圖片

    目錄 準(zhǔn)備工作 后端Koa 前端Vue 建議 購(gòu)買(mǎi)騰訊云OSS存儲(chǔ)后需要獲得以下幾個(gè)變量 SecretId:秘鑰id SecretKey:秘鑰 Bucket:存儲(chǔ)桶名稱(chēng) 可在騰訊云的圖像界面創(chuàng)建存儲(chǔ)桶 Region:購(gòu)買(mǎi)時(shí)選擇的區(qū)域 我這里是南京 prefix:可選 騰訊云中自定義的文件夾名稱(chēng) 我這里是indexImages 后端項(xiàng)目中

    2024年02月07日
    瀏覽(16)
  • JAVA開(kāi)發(fā)(騰訊云OSS圖片上傳)

    需求背景: 項(xiàng)目中需要上傳圖片。 存儲(chǔ)方式: 使用騰訊云的OSS組件。 代碼實(shí)現(xiàn): 1、使用騰訊云OSS需要使用的參數(shù)信息: OSS的域名; OSS的地域節(jié)點(diǎn); OSS存儲(chǔ)桶的名稱(chēng); OSS權(quán)限憑證; OSS權(quán)限訪問(wèn)秘鑰; OSS圖片存儲(chǔ)策略; 使用的縮略圖策略; 允許上傳的圖片類(lèi)型; 參數(shù)

    2024年02月11日
    瀏覽(24)
  • 【flutter直接上傳圖片到阿里云OSS】

    flutter直接上傳文件到阿里云需要獲取憑證,通過(guò)調(diào)用阿里云獲取憑證的接口能拿到下面這些參數(shù) 獲取憑證的接口一般是后臺(tái)去對(duì)接阿里云,前端調(diào)后臺(tái)接口即可。(STS.的這種AccessKeyId安全性高一些) 1.獲取OSSToken信息 token信息實(shí)體類(lèi) 上傳方法 調(diào)用方式 以上直接是上傳圖片到

    2024年02月11日
    瀏覽(24)
  • 若依的多圖片上傳/回顯/保存多圖片路徑url逗號(hào)隔開(kāi)存數(shù)據(jù)庫(kù),前后端都有,拷貝即用

    用戶在前端上傳不等數(shù)量圖片,現(xiàn)在需要把其相對(duì)/絕對(duì)路徑存進(jìn)數(shù)據(jù)庫(kù)中,方便后期使用和頁(yè)面回顯. 后端存儲(chǔ)pic字段是字符串 用于? 用\\\",\\\"逗號(hào)? 拼接 多個(gè)圖片 url? 1.html代碼: 前端走馬燈瀏覽已經(jīng)上傳的圖片 前端JS方法,一共四個(gè), 1.上傳前校驗(yàn)方法 2.上傳方法 3.上傳數(shù)量限制方

    2024年02月16日
    瀏覽(23)
  • SpringBoot整合阿里云Oss實(shí)現(xiàn)文件圖片上傳

    SpringBoot整合阿里云Oss實(shí)現(xiàn)文件圖片上傳

    目錄 1. 阿里云Oss注冊(cè)使用 2. 項(xiàng)目中使用 2.1 引入依賴以及插件 2.2 編寫(xiě)配置文件application.properties 2.3 創(chuàng)建常量類(lèi),獲取配置信息 ?2.4 serviceImpl中實(shí)現(xiàn)邏輯 ? ? ? ? ? ?

    2024年02月08日
    瀏覽(31)
  • java實(shí)現(xiàn)上傳圖片或視頻到oss中

    當(dāng)上傳圖片和視頻到OSS時(shí),你可以使用阿里云的Java SDK來(lái)實(shí)現(xiàn)。以下是一個(gè)示例的Java代碼,包括圖片和視頻的上傳功能: 在上述代碼中,你需要替換以下變量的值: ACCESS_KEY_ID和ACCESS_KEY_SECRET:阿里云的訪問(wèn)密鑰,可以在阿里云控制臺(tái)獲取。 BUCKET_NAME:OSS存儲(chǔ)桶的名稱(chēng)。 IMA

    2024年02月07日
    瀏覽(24)
  • 使用SpringBoot將圖片上傳至阿里云OSS

    使用SpringBoot將圖片上傳至阿里云OSS

    1. 什么是OSS? 官方的解釋是這樣的:阿里云對(duì)象存儲(chǔ)OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù),提供99.9999999999%(12個(gè)9)的數(shù)據(jù)持久性,99.995%的數(shù)據(jù)可用性。 官網(wǎng):對(duì)象存儲(chǔ)OSS 2. 為什么要使用OSS? 作者認(rèn)為主要是方便項(xiàng)目上線后的文件業(yè)務(wù)的處

    2024年02月06日
    瀏覽(25)
  • Vue中實(shí)現(xiàn)圖片上傳,上傳后的圖片回顯,存儲(chǔ)圖片到服務(wù)器 【使用對(duì)象存儲(chǔ)OSS】

    Vue中實(shí)現(xiàn)圖片上傳,上傳后的圖片回顯,存儲(chǔ)圖片到服務(wù)器 【使用對(duì)象存儲(chǔ)OSS】

    前言 以下只提供一種思路,對(duì)新手可能不太友好。 這里將前端Vue上傳的圖片直接存儲(chǔ)到服務(wù)器上, Alibaba Cloud OSS : 阿里云對(duì)象存儲(chǔ)服務(wù)(Object Storage Service,簡(jiǎn)稱(chēng) OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù)。您可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲(chǔ)

    2024年02月06日
    瀏覽(124)
  • PHP之 使用阿里云對(duì)象存儲(chǔ)OSS上傳圖片

    PHP之 使用阿里云對(duì)象存儲(chǔ)OSS上傳圖片

    參考地址 https://blog.csdn.net/weixin_42672802/article/details/129136850 https://blog.csdn.net/HZX19941018/article/details/86066529

    2024年02月16日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包