亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

element-ui 文件上傳修改文件名的方法示例

 更新時間:2019年11月05日 08:25:41   作者:TJ-XiaJiaHao  
這篇文章主要介紹了element-ui 文件上傳修改文件名的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

技術(shù)背景

Vue + axios + element-ui

問題的產(chǎn)生

一個美好的周五,我正在愉快地打著代碼,突然收到一封來自產(chǎn)品的神秘消息,線上活動出 BUG 了!吶尼!怎么可能!一定是你的打開方式不對!打開消息截圖,線上的一個聊天室背景突然變成了另一張毫無關(guān)聯(lián)的圖(一個大大的太陽),我一看,這不是我剛剛上傳的一個圖嘛!為什么跑到那里去了!

問題定位

我們所有的靜態(tài)資源(比如圖片)都會上傳到一個服務(wù)器上,在活動中訪問時會統(tǒng)一訪問靜態(tài)資源服務(wù)器,而靜態(tài)資源上傳時并沒有處理重名問題?。。〗涌趥?cè)僅僅是在前面加了一個4位數(shù)的隨機數(shù),也就是說,當(dāng)同名圖片超過 10000 張時,百分百會有圖片被覆蓋??!沒錯是直接覆蓋而不是報錯!即使不到10000張,同名數(shù)量越多,被覆蓋概率也就越高。

開始甩鍋

遇到問題不用慌!只要鍋甩的好,一切問題都不是問題!我直接找到后臺負責(zé)人,描述了一下情況,只見他云淡風(fēng)輕地說了一句:這不是我的 KPI 。???我 ** 你個 xx,男人都是大豬蹄子!靠別人是不行了,只能靠自己,還是自己搞一下吧。

嘗試偷懶

element-ui 屹立這么多年,我相信它一定能夠完成修改文件名的重任,于是滿懷期待地打開官方文檔,很好!不支持!現(xiàn)在是周五晚上六點半,很好,注定又不能好好吃飯了!

攔截文件上傳

文件對象(file)是不能直接修改文件名的,file.name 是只讀屬性,如果你強行賦值,會直接報錯,所以只能攔截掉 element-ui -> uploader 的默認(rèn)上傳行為,改為自己上傳。下面為核心 HTML 代碼,主要是利用 before-upload 事件來阻止上傳

<el-upload :before-upload="beforeUpload">
  <i class="el-icon-plus" />
</el-upload>

beforeUpload 代碼:既然 file.name 是只讀屬性,那就只能新建一個 file 對象了。你不仁,就不要怪我不義了!新建的文件名為時間戳 + 原文件名。

beforeUpload(file) {
  const timeStamp = new Date() - 0
  const copyFile = new File([file], `${timeStamp}_${file.name}`)
  this.uploadFile(copyFile)
  return false
}

uploadFile 代碼:構(gòu)建一個 FormData 對象,僅此而已!

uploadFile(file) {
  const formdata = new FormData()
  formdata.append('lbf-file-upload', file)
  formdata.append('name', 'lbf-file-upload')
  formdata.append('_csrfToken', this.$ajax.getCsrfToken()._csrfToken)
  this.postForm(formdata)
}

postForm 代碼:利用 axios 庫上傳到服務(wù)器。

postForm(formdata) {
  this.$ajax.post('/xxx/ajax/general/file/files', formdata).then(res => {
    if (res.code == null || res.code === 0) {
      // do something
    } else {
      this.$message.error(res.msg || res.message || '文件上傳失敗')
    }
  }).catch((err) => {
    this.$message.error(err.message || '文件上傳失敗')
  })
}

就此搞定!以后所有的文件上傳都將自動帶上時間戳前綴,后臺4位隨機數(shù)機制 + 時間戳 + 文件名,要再想覆蓋,簡直難如程序員找女朋友!

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

相關(guān)文章

  • 解決Vue.js 2.0 有時雙向綁定img src屬性失敗的問題

    解決Vue.js 2.0 有時雙向綁定img src屬性失敗的問題

    下面小編就為大家分享一篇解決Vue.js 2.0 有時雙向綁定img src屬性失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue使用smooth-signature實現(xiàn)移動端橫豎屏電子簽字

    vue使用smooth-signature實現(xiàn)移動端橫豎屏電子簽字

    這篇文章主要為大家介紹了vue使用smooth-signature實現(xiàn)移動端橫豎屏電子簽字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Vue中實現(xiàn)視頻播放的示例詳解

    Vue中實現(xiàn)視頻播放的示例詳解

    這篇文章主要為大家學(xué)習(xí)介紹了基于Vue如何實現(xiàn)視頻播放的功能,文中的示例代碼講解詳細,具有一定的參考價值,需要的小伙伴可以了解一下
    2023-08-08
  • Vue3.x中使用element-plus的各種方式詳解

    Vue3.x中使用element-plus的各種方式詳解

    這篇文章主要介紹了Vue3.x中使用element-plus的各種方式詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue中使用console.log打印的實現(xiàn)

    vue中使用console.log打印的實現(xiàn)

    這篇文章主要介紹了vue中使用console.log打印的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 分分鐘玩轉(zhuǎn)Vue.js組件

    分分鐘玩轉(zhuǎn)Vue.js組件

    這篇文章教大家如何分分鐘玩轉(zhuǎn)Vue.js組件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Vue虛擬DOM詳細介紹

    Vue虛擬DOM詳細介紹

    虛擬DOM的概念是通過狀態(tài)生成一個虛擬節(jié)點樹,然后使用虛擬節(jié)點樹進行渲染。在渲染之前,會使用新生成的虛擬節(jié)點和上一次生成的虛擬節(jié)點進行對比,只渲染不同的部分
    2022-08-08
  • vue+watermark-dom實現(xiàn)頁面水印效果(示例代碼)

    vue+watermark-dom實現(xiàn)頁面水印效果(示例代碼)

    watermark.js 是基于 DOM 對象實現(xiàn)的 BS 系統(tǒng)的水印,確保系統(tǒng)保密性,安全性,降低數(shù)據(jù)泄密風(fēng)險,簡單輕量,支持多屬性配置,本文將通過 vue 結(jié)合 watermark-dom 庫,教大家實現(xiàn)簡單而有效的頁面水印效果,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • ?用Vue?Demi?構(gòu)建同時兼容Vue2與Vue3組件庫

    ?用Vue?Demi?構(gòu)建同時兼容Vue2與Vue3組件庫

    這篇文章主要介紹了?用Vue?Demi?構(gòu)建同時兼容Vue2與Vue3組件庫,我們通過考慮其功能、工作原理以及如何開始使用它來了解?Vue?Demi,下面我們一起進入文章學(xué)起來吧
    2022-02-02
  • vue3+three.js實現(xiàn)疫情可視化功能

    vue3+three.js實現(xiàn)疫情可視化功能

    這篇文章主要介紹了vue3+three.js實現(xiàn)疫情可視化,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09

最新評論