少妇无码太爽了在线播放_久久久综合香蕉尹人综合网_日日碰狠狠添天天爽五月婷_国产欧美精品一区二区三区四区

人(ren)參的用量

axios傳遞參數傳不過去,vue上傳文件時的一些定制操作



上傳文件時,有時候會碰到需要額(e)外傳遞一些(xie)參數,顯示(shi)上傳的(de)進度(du)之(zhi)(zhi)類,這里分享(xiang)下之(zhi)(zhi)前(qian)做過的(de)一些(xie)處理。

vue里一般上傳文件會用到一些組(zu)件,本次使用的(de)是(shi)el-upload,這(zhe)里只是(shi)介(jie)紹一種(zhong)思路, 其他(ta)的(de)組(zu)件類似,有(you)(you)碰到類似問題的(de),歡(huan)迎(ying)探討。 前端小白,涉(she)及(ji)到的(de)代(dai)碼可能會有(you)(you)點粗糙,歡(huan)迎(ying)來噴。

一開始(shi)在demo的(de)(de)時候,直(zhi)接用(yong)的(de)(de)axios,按照官方(fang)的(de)(de)文檔,還(huan)是(shi)比較(jiao)順利的(de)(de)。不(bu)過一般vue項(xiang)目里里都會封裝(zhuang)一個(ge)http請(qing)求(qiu)的(de)(de)攔(lan)截(jie)(jie)器,用(yong)來做一些(xie)請(qing)求(qiu)的(de)(de)攔(lan)截(jie)(jie)和一些(xie)必(bi)要信息(xi)的(de)(de)傳遞。自然為了統一,上傳文件的(de)(de)內容也(ye)會使用(yong)到(dao)這個(ge)封裝(zhuang)的(de)(de)請(qing)求(qiu)。

http攔(lan)截器部分代碼如下(xia):(保(bao)存的文件位置和文件名是在utils/request.js里

import axios from 'axios'import { Message } from 'element-ui'const baseURL =  process.env.NODE_ENV === 'development'    ? '//127.0.0.1:8080/api'    : '//127.0.0.1/api'const instance = axios.create({  baseURL,  timeout: 30000,  withCredentials: true})instance.interceptors.request.use(  config => {    config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token')    return config  },  error => {    Message({      showClose: true,      message: error,      type: 'error'    })    Promise.reject(error)  })

axios有一(yi)個(ge)配置項(xiang)是onUploadProgress, 主要就是獲(huo)取文(wen)件上傳(chuan)進度的(de)(de),上面(mian)的(de)(de)通用(yong)封裝沒有這個(ge)選項(xiang),但是我們可以在需要使用(yong)的(de)(de)地方,加(jia)入(ru)這個(ge)配置項(xiang),比(bi)如(ru)下面(mian)的(de)(de)這個(ge)upload方法(fa)

import request from '@/utils/request'function upload(data, config = {}) {  return request({    url: '/upload',    method: 'POST',    data: data,    ...config  })}

在實(shi)際的業務(wu)的vue代碼里(li), template組件部分(fen)

<el-upload  ref="newupload"  class="upload-file"  drag  :before-upload="beforeUpload"  multiple  action="no"  :http-request="doUpload"  :auto-upload="false"  accept=".mp4,.flv,.mov"  :on-change="handleChange"  :on-success="handlesuccess">  <i v-if="uploadFlag === false" class="el-icon-upload" />  <div v-if="uploadFlag === false" class="el-upload__text">    將文件拖到此處,或<em>點擊上傳</em>  </div>  <el-progress    v-if="uploadFlag === true"    type="circle"    :percentage="uploadPercent"    style="margin-top: 30px;"  />  <div slot="tip" class="el-upload__tip">    請注意您只能上傳.mp4 .flv .mov格式的視頻文件  </div></el-upload>

注意(yi),上述需要使(shi)用el-upload的(de)(de)(de)http-request方法,如果不用的(de)(de)(de)話,直接使(shi)用原(yuan)生(sheng)的(de)(de)(de)action方式,就沒法攜(xie)帶(dai)額外的(de)(de)(de)參數了

vue文件中的(de)script代碼,就可以使(shi)用上面封(feng)裝的(de)upload方法了(le),部分doUpload方法的(de)代碼如下:

// 上傳文件是Form表單,但是el-upload默認的形式,沒法額外增加其他參數// 這里新定義一個FormData對象let fd = new FormData()let self = this// video屬性綁定了二級制文件流內容fd.append('video', val.file)// 這里可以攜帶另外參數,用fd.append的形式即可fd.append('Content-Type', 'video/mp4')// 調用前面封裝的upload方法upload(fd, {    onUploadProgress(progress) {     // uploadPercent的值是el-progress組件綁定的值      self.uploadPercent = Math.round(        (progress.loaded / progress.total) * 100      )    }}).then(res => {    console.log(res)})

這里upload的參數(shu),傳入了(le)一個(ge){}類型,方法(fa)是(shi)onUploadProgress,axios其他的配置,也(ye)可以用類似(si)的思路來增(zeng)加。

聯(lian)系我(wo)們

聯系我們

在線咨詢:

郵件:@QQ.COM

工(gong)作時(shi)間:周一(yi)至周五,8:30-21:30,節假日不休

關(guan)注(zhu)微信
關注微信
返回(hui)頂部