真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Vue移動端如何實現(xiàn)圖片上傳及超過1M壓縮上傳

這篇文章主要介紹Vue移動端如何實現(xiàn)圖片上傳及超過1M壓縮上傳,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)服務(wù)項目包括博野網(wǎng)站建設(shè)、博野網(wǎng)站制作、博野網(wǎng)頁制作以及博野網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,博野網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到博野省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1、實現(xiàn)效果

Vue移動端如何實現(xiàn)圖片上傳及超過1M壓縮上傳

2、代碼

Html:


  
   
   
   添加圖片
  

Css:使用了less ,需要引入less,才能使用(npm install less less-loader --save)

.choosePic{
  margin: 0.64rem 0;
  .pics{
  background-position: center;
  background-size: cover;
  width: 15.1467rem;
  height: 5.5467rem;
  background-color: #F9F9F9;
  border: 2px solid #C3C3C3;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 1rem;
  color: #3DCA9A;
  font-weight: bold;
  border-radius: 0.213rem;
  >div{
   margin-left: 0.213rem;
   letter-spacing: 2px
  }
  .uploads{
   position: absolute;
   z-index: 99;
   left: 0;
   width: 99%;
   height: 5.5467rem;
   opacity: 0;
  }
  img{
   width: 1.4933rem;
   height: 1.4933rem;
  }

  }
 }

JS:

/**
 * 上傳銷售記錄
 */
uploadserpRecords (e) {
 let file = e.target.files[0]
 if (file === undefined) {
 return
 }
 if (file.size / 1024 > 1025) { // 文件大于1M(根據(jù)需求更改),進行壓縮上傳
 that.photoCompress(file, { // 調(diào)用壓縮圖片方法
  quality: 0.2
 }, function (base64Codes) {
  // console.log("壓縮后:" + base.length / 1024 + " " + base);
  let bl = that.base64UrlToBlob(base64Codes)
  // file.append('file', bl, 'file_' + Date.parse(new Date()) + '.jpg') // 文件對象
  that.uploadLice(bl) // 請求圖片上傳接口
 })
 } else { // 小于等于1M 原圖上傳
 this.uploadLice(file)
 }
}, 
/**
 * base64 轉(zhuǎn) Blob 格式 和file格式
 */
base64UrlToBlob (urlData) {
 let arr = urlData.split(','),
 mime = arr[0].match(/:(.*?);/)[1], // 去掉url的頭,并轉(zhuǎn)化為byte
 bstr = atob(arr[1]), // 處理異常,將ascii碼小于0的轉(zhuǎn)換為大于0
 n = bstr.length,
 u8arr = new Uint8Array(n)
 while (n--) {
 u8arr[n] = bstr.charCodeAt(n)
 }
 // 轉(zhuǎn)blob
 // return new Blob([u8arr], {type: mime})
 let filename = Date.parse(new Date()) + '.jpg'
 // 轉(zhuǎn)file
 return new File([u8arr], filename, {type: mime})
},
 /*
 壓縮圖片
 file:文件(類型是圖片格式),
 obj:文件壓縮后對象width, height, quality(0-1)
 callback:容器或者回調(diào)函數(shù)
*/
photoCompress (file, obj, callback) {
 let that = this
 let ready = new FileReader()
 /* 開始讀取指定File對象中的內(nèi)容. 讀取操作完成時,返回一個URL格式的字符串. */
 ready.readAsDataURL(file)
 ready.onload = function () {
 let re = this.result
 that.canvasDataURL(re, obj, callback) // 開始壓縮
 }
},
/* 利用canvas數(shù)據(jù)化圖片進行壓縮 */
/* 圖片轉(zhuǎn)base64 */
canvasDataURL (path, obj, callback) {
 let img = new Image()
 img.src = path
 img.onload = function () {
 let that = this // 指到img
 // 默認按比例壓縮
 let w = that.width,
  h = that.height,
  scale = w / h
 w = obj.width || w
 h = obj.height || (w / scale)
 let quality = 0.2 // 默認圖片質(zhì)量為0.7
 // 生成canvas
 let canvas = document.createElement('canvas')
 let ctx = canvas.getContext('2d')
 // 創(chuàng)建屬性節(jié)點
 let anw = document.createAttribute('width')
 anw.nodeValue = w
 let anh = document.createAttribute('height')
 anh.nodeValue = h
 canvas.setAttributeNode(anw)
 canvas.setAttributeNode(anh)
 ctx.drawImage(that, 0, 0, w, h)
 // 圖像質(zhì)量
 if (obj.quality && obj.quality >= 1 && obj.quality < 0) {
  quality = obj.quality
 }
 // quality值越小,所繪制出的圖像越模糊
 let base64 = canvas.toDataURL('image/jpeg', quality)
 // 回調(diào)函數(shù)返回base64的值
 callback(base64)
 }
},
// 返回file文件,調(diào)用接口執(zhí)行上傳
uploadLice (file) {
 console.log(file)
 uploadLog(file, (data) => {
 this.form.operatingLicense = data
 console.log(data)
 })
},

以上是“Vue移動端如何實現(xiàn)圖片上傳及超過1M壓縮上傳”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱欄目:Vue移動端如何實現(xiàn)圖片上傳及超過1M壓縮上傳
標(biāo)題網(wǎng)址:http://weahome.cn/article/gssjid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部