1. 程式人生 > >【vue】移動端通過cube-ui實現圖片上傳

【vue】移動端通過cube-ui實現圖片上傳

「Pre」cube-ui的安裝

POST:https://blog.csdn.net/dangbai01_/article/details/84935882

  

一、普通上傳

 

<cube-upload

    action="//目標地址"

    :simultaneous-uploads="1"

    @files-added="filesAdded"

    style="padding-left:15px" />

 

 

  methods: {

    filesAdded(files) {

      let hasIgnore = false

      const maxSize = 1 * 1024 * 1024 // 1M

      for (let k in files) {

        const file = files[k]

        if (file.size > maxSize) {

          file.ignore = true

          hasIgnore = true

        }

      }

    hasIgnore && this.$createToast({

        type: 'warn',

        time: 1000,

        txt: 'You selected >1M files'

      }).show()

    },

}

 

配置 action 表示上傳的 URL 地址,而 simultaneous-uploads 則表示支援的併發上傳個數。

通過 files-added 事件可以實現檔案過濾,設定 file.ignore = true 即可。

 

 

 

二、普通的壓縮上傳

多了一個壓縮圖片的屬性

:process-file="processFile"

和一個壓縮圖片的方法:

 

    processFile(file, next) {

      compress(file, {

        compress: {

          width: 1600,

          height: 1600,

          quality: 1

        }

      }, next)

    },

 

compress方法用的是鵝廠的,下邊的base64上傳也要用,命名是image.js,

檔案內容我放到自己github裡了:

POST:https://github.com/canwhite/QCVueTest/blob/master/image%20compress/image.js

專案中,我是在src裡邊,建了個modules資料夾放進去了/src/modules/image

引入(結合自己的元件位置):

import compress from '../modules/image'

 

 

三、壓縮之後base64上傳

 

<cube-upload

  ref="upload"

  :action="action"

  :simultaneous-uploads="1"

  :process-file="processFile"

  @file-submitted="fileSubmitted"

  style = "padding-left:15px"

   />

 

 

data(){

    return{

      action: {

        target: ‘//目標地址',

        prop: 'base64Value'

      }

    }

}

methods: {

    processFile(file, next) {

      compress(file, {

        compress: {

          width: 1600,

          height: 1600,

          quality: 1

        }

      }, next)

    },

    fileSubmitted(file) {

      file.base64Value = file.file.base64

    },

}