最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年12月23日 14:53:11   作者:卜卦丶cc  
這篇文章主要為大家詳細(xì)介紹了Vue移動端實(shí)現(xiàn)圖片上傳及超過1M壓縮上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Vue移動端實(shí)現(xiàn)圖片上傳及超過1M壓縮上傳的具體代碼,供大家參考,具體內(nèi)容如下

1、實(shí)現(xiàn)效果

2、代碼

Html:

<div class="choosePic">
  <div class="pics" :style="{backgroundImage: 'url(' + form.erpRecords + ')'}">
   <input type="file" class="uploads" @change="uploadserpRecords" accept="image/*" multiple >
   <img src="../../assets/home/ic_AddImage@3x.png" alt="" v-if="form.erpRecords == ''">
   <div v-if="form.erpRecords == ''">添加圖片</div>
  </div>
</div>

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ù)需求更改),進(jìn)行壓縮上傳
 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)容. 讀取操作完成時(shí),返回一個(gè)URL格式的字符串. */
 ready.readAsDataURL(file)
 ready.onload = function () {
 let re = this.result
 that.canvasDataURL(re, obj, callback) // 開始壓縮
 }
},
/* 利用canvas數(shù)據(jù)化圖片進(jìn)行壓縮 */
/* 圖片轉(zhuǎn)base64 */
canvasDataURL (path, obj, callback) {
 let img = new Image()
 img.src = path
 img.onload = function () {
 let that = this // 指到img
 // 默認(rèn)按比例壓縮
 let w = that.width,
  h = that.height,
  scale = w / h
 w = obj.width || w
 h = obj.height || (w / scale)
 let quality = 0.2 // 默認(rèn)圖片質(zhì)量為0.7
 // 生成canvas
 let canvas = document.createElement('canvas')
 let ctx = canvas.getContext('2d')
 // 創(chuàng)建屬性節(jié)點(diǎn)
 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)
 })
},

關(guān)于vue.js組件的教程,請大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。

更多vue學(xué)習(xí)教程請閱讀專題《vue實(shí)戰(zhàn)教程》

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue 中filter的多種用法

    vue 中filter的多種用法

    這篇文章主要介紹了vue 中filter的多種用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2018-04-04
  • mpvue跳轉(zhuǎn)頁面及注意事項(xiàng)

    mpvue跳轉(zhuǎn)頁面及注意事項(xiàng)

    這篇文章主要介紹了mpvue跳轉(zhuǎn)頁面及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下
    2018-08-08
  • vue原理Compile之optimize標(biāo)記靜態(tài)節(jié)點(diǎn)源碼示例

    vue原理Compile之optimize標(biāo)記靜態(tài)節(jié)點(diǎn)源碼示例

    這篇文章主要為大家介紹了vue原理Compile之optimize標(biāo)記靜態(tài)節(jié)點(diǎn)源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue 重塑數(shù)組之修改數(shù)組指定index的值操作

    vue 重塑數(shù)組之修改數(shù)組指定index的值操作

    這篇文章主要介紹了vue 重塑數(shù)組之修改數(shù)組指定index的值操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • VsCode工具開發(fā)vue項(xiàng)目必裝插件清單(推薦!)

    VsCode工具開發(fā)vue項(xiàng)目必裝插件清單(推薦!)

    對于很多使用vscode編寫vue項(xiàng)目的新手同學(xué)來說,可能不知道使用什么插件,下面這篇文章主要給大家介紹了關(guān)于VsCode工具開發(fā)vue項(xiàng)目必裝插件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Vue?element實(shí)現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    Vue?element實(shí)現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    目前本人再使用vue-element-admin項(xiàng)目時(shí)都是通過直接刪除一些用不上的路由來進(jìn)行側(cè)邊欄的清除,但是其實(shí)有一個(gè)更加好的辦法來對項(xiàng)目的側(cè)邊欄顯示的內(nèi)用進(jìn)行管理,就是權(quán)限管理,其實(shí)也不知道這個(gè)方法好不好,原理上來說時(shí)跟直接刪除該路由的方式時(shí)一樣的
    2022-08-08
  • Vue.js實(shí)現(xiàn)圖片切換功能

    Vue.js實(shí)現(xiàn)圖片切換功能

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)圖片切換功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 手動掛載Vue3.0組件到DOM節(jié)點(diǎn)的方法

    手動掛載Vue3.0組件到DOM節(jié)點(diǎn)的方法

    在VUE應(yīng)用中,經(jīng)常會使用一些非vue實(shí)現(xiàn)的js庫,這些js庫可能要求外部傳入一些界面DOM節(jié)點(diǎn),本文主要介紹了手動掛載Vue3.0組件到DOM節(jié)點(diǎn)的方法,感興趣的可以了解一下
    2024-08-08
  • Vue中iframe?結(jié)合?window.postMessage?實(shí)現(xiàn)跨域通信

    Vue中iframe?結(jié)合?window.postMessage?實(shí)現(xiàn)跨域通信

    window.postMessage()?方法可以安全地實(shí)現(xiàn)跨源通信,在一個(gè)項(xiàng)目的頁面中嵌入另一個(gè)項(xiàng)目的頁面,需要實(shí)現(xiàn)父子,子父頁面的通信,對Vue中iframe?結(jié)合?window.postMessage?實(shí)現(xiàn)跨域通信相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Element-ui之ElScrollBar組件滾動條的使用方法

    Element-ui之ElScrollBar組件滾動條的使用方法

    這篇文章主要介紹了Element-ui之ElScrollBar組件滾動條的使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論

莒南县| 长武县| 田东县| 开封市| 诏安县| 文化| 鱼台县| 鄯善县| 界首市| 和平区| 洛宁县| 遂川县| 比如县| 宁化县| 巴彦县| 仁化县| 来安县| 自贡市| 且末县| 信宜市| 五家渠市| 陆河县| 林甸县| 响水县| 湖北省| 桓仁| 抚州市| 浙江省| 平邑县| 繁昌县| 河源市| 尉氏县| 洞头县| 固安县| 竹北市| 石台县| 彰化县| 嵩明县| 太白县| 邵武市| 玛曲县|