欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用upload組件怎么實(shí)現(xiàn)多圖片上傳

今天就跟大家聊聊有關(guān)使用upload組件怎么實(shí)現(xiàn)多圖片上傳,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),合陽(yáng)企業(yè)網(wǎng)站建設(shè),合陽(yáng)品牌網(wǎng)站建設(shè),網(wǎng)站定制,合陽(yáng)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,合陽(yáng)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1.我們要利用element-ui的Upload組件布置界面:

//upload.vue
<el-upload
 :action= domain
 ref="upload"
 accept='image/jpeg,image/gif,image/png'
 :auto-upload="false"
 :http-request="upqiniu"
 :limit="limit"
 :multiple="multiple"
 list-type="picture-card"
 :before-upload="beforeUpload"
 :on-preview="handlePictureCardPreview"
 :on-change="handldChange"
 :on-remove="handleRemove">
 <i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
 <img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>

domain 指的是我們的上傳地址,upqiniu 是我們自定義的上傳方法,beforeUpload 是圖片上傳前執(zhí)行的方法。關(guān)于該組件的其他用法可以在element的官方文檔查閱:Upload 上傳

2.對(duì)圖片進(jìn)行壓縮

// upload.vue
imgQuality: 0.5, //壓縮圖片的質(zhì)量

dataURItoBlob(dataURI, type) {
 var binary = atob(dataURI.split(',')[1]);
 var array = [];
 for(var i = 0; i < binary.length; i++) {
  array.push(binary.charCodeAt(i));
 }
 return new Blob([new Uint8Array(array)], {type: type});
},

beforeUpload(param) {
 //對(duì)圖片進(jìn)行壓縮
 const imgSize = param.size / 1024 / 1024
 if(imgSize > 1) {
  const _this = this
  return new Promise(resolve => {
   const reader = new FileReader()
   const image = new Image()
   image.onload = (imageEvent) => {
    const canvas = document.createElement('canvas');
    const context = canvas.getContext('2d');
    const width = image.width * _this.imgQuality
    const height = image.height * _this.imgQuality
    canvas.width = width;
    canvas.height = height;
    context.clearRect(0, 0, width, height);
    context.drawImage(image, 0, 0, width, height);
    const dataUrl = canvas.toDataURL(param.type);
    const blobData = _this.dataURItoBlob(dataUrl, param.type);
    resolve(blobData)
   }
   reader.onload = (e => { image.src = e.target.result; });
   reader.readAsDataURL(param);
  })
 }
}

壓縮圖片實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單。就是在beforeUpload()方法里面return一個(gè)Promise,Promise里面我們把圖片的長(zhǎng)度和寬度按比例進(jìn)行縮小,并把圖片畫到canvas上,然后把canvas轉(zhuǎn)成一個(gè)blod對(duì)象。

3.前端向后端請(qǐng)求上傳token。

//upload.vue
upqiniu(param) {
 let filetype = ''
 if (param.file.type === 'image/png') {
  filetype = 'png'
 } else {
  filetype = 'jpg'
 }
 const formdata = {
  filetype: filetype,
  param: param
 }
 this.actionGetUploadToken(formdata)    
}

// vuex/action.js
actionGetUploadToken({commit}, obj) {
 const msg = {
  filetype: obj.filetype
 }
 usersApi.getImgUploadToken(msg).then((response) => {
  if(response.stateCode === 200) {
   commit('uploadImg', {'token': response.token, 'key': response.key, 'param': obj.param})
  } 
 }, (error) => {
  console.log(`獲取圖片上傳憑證錯(cuò)誤:${error}`)
  commit('uploadImgError')
 })
},

4.后端生成上傳token,并發(fā)給前端,我用Python實(shí)現(xiàn)。

filetype = data.get('filetype')
# 構(gòu)建鑒權(quán)對(duì)象
q = Auth(configs.get('qiniu').get('AK'), configs.get('qiniu').get('SK'))

# 生成圖片名
salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
key = salt + '_' + str(int(time.time())) + '.' + filetype

# 生成上傳 Token,可以指定過(guò)期時(shí)間等
token = q.upload_token(configs.get('qiniu').get('bucket_name'), key, 3600)
return Response({"stateCode": 200, "token": token, "key": key}, 200)

5.前端接收token,開(kāi)始向服務(wù)器上傳圖片

// vuex/state.js
imgName: [], //圖片名數(shù)組

// vuex/mutations.js
uploadImg(state, msg) {
 const config = {
  usecdnDomain: true,
  region: qiniu.region.z2
 }
 var putExtra = {
  fname: msg.param.file.name,
  params: {},
  mimeType: ["image/png", "image/jpeg", "image/gif"]
 };
 var observer = {
  next(res){

  },
  error(err){
   console.log(`圖片上傳錯(cuò)誤信息:${err.message}`)
  }, 
  complete(res){
   console.log(`圖片上傳成功:${res.key}`)
   state.imgName.push(res.key)
  }
 }
 var observable = qiniu.upload(msg.param.file, msg.key, msg.token, putExtra, config)
 //上傳開(kāi)始
 var subscription = observable.subscribe(observer)
},

6.上傳成功以后,將圖片名存入數(shù)據(jù)庫(kù)

// 用到upload.vue的界面
this.imgsList = this.imgName.map(key => `http://${this.qiniuaddr}/${key}`)
switch(this.imgsList.length) {
 case 4:
 this.img4 = this.imgsList[3]
 case 3:
 this.img3 = this.imgsList[2]
 case 2:
 this.img2 = this.imgsList[1]
 case 1:
 this.img1 = this.imgsList[0]
}
let obj = {
 goods_img1: this.img1,
 goods_img2:this.img2,
 goods_img3:this.img3,
 goods_img4:this.img4
}
//將信息發(fā)送給后端
this.actionPublish(obj)

看完上述內(nèi)容,你們對(duì)使用upload組件怎么實(shí)現(xiàn)多圖片上傳有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章標(biāo)題:使用upload組件怎么實(shí)現(xiàn)多圖片上傳
分享地址:http://chinadenli.net/article4/jsidoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站靜態(tài)網(wǎng)站、定制網(wǎng)站、做網(wǎng)站、服務(wù)器托管、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
欧美日韩国产亚洲三级理论片 | 国产在线成人免费高清观看av| 日韩免费午夜福利视频| 亚洲女同一区二区另类| 久久精品中文扫妇内射| 午夜精品一区免费视频| 99亚洲综合精品成人网色播 | 欧美久久一区二区精品| 免费观看日韩一级黄色大片| 国产不卡在线免费观看视频| 色鬼综合久久鬼色88| 久久永久免费一区二区| 日韩高清毛片免费观看| 国产福利在线播放麻豆| 精品日韩av一区二区三区| 欧美成人精品一区二区久久| 91久久国产福利自产拍| 91精品国产综合久久不卡| 国产精品久久香蕉国产线| 午夜视频免费观看成人| 色婷婷在线视频免费播放| 欧美乱妇日本乱码特黄大片 | 久久精品亚洲精品一区| 日韩中文无线码在线视频| 亚洲熟妇中文字幕五十路| 欧美不卡高清一区二区三区| 久久国内午夜福利直播| 国产在线观看不卡一区二区| 欧美日韩在线视频一区| 日本成人三级在线播放| 午夜视频在线观看日韩| 日本加勒比在线播放一区| 国产内射一级一片内射高清| 欧美日韩精品人妻二区三区| 亚洲av在线视频一区| 午夜传媒视频免费在线观看| 精品一区二区三区中文字幕| 国内胖女人做爰视频有没有| 国产成人精品午夜福利| 亚洲中文字幕高清乱码毛片| 免费大片黄在线观看国语|