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

原生js實現(xiàn)文件上傳、下載、封裝等實例方法

 更新時間:2020年01月05日 12:15:48   作者:王希有  
在本篇文章里小編給各位整理的是關(guān)于原生js實現(xiàn)文件上傳、下載、封裝等實例方法,需要的朋友們可以參考學(xué)習下。

一 、下載

1、代碼

const fileDownloadClick = (obj) => { // 解決兼容
 if( document.all ){
  obj.click();
 } else {
  let event = document.createEvent("MouseEvents");
  event.initEvent('click', true, true);
  obj.dispatchEvent(event);
 }
}
const fileDownload = (res,obj) => { // 下載
  /*
  obj :{
   userName  下載人
   weeklyTime 下載時間
   weeklyType 下載類型 
  }
 */ 
 let blob = new Blob([res]);
 let url = window.URL.createObjectURL(blob);
 let link = document.createElement('a');
 link.style.display = 'none';
 link.href = url;
 link.setAttribute('download', `${obj.userName || ' '}_${obj.weeklyTime || dateFormatYMD(new Date())}_${obj.weeklyType || '.xlsx' }`);
 document.body.appendChild(link);
 // link.click();
 fileDownloadClick(link);
 window.URL.revokeObjectURL(url);
}

2、請求時,需增加請求頭

responseType: 'blob',

3、使用

res: 后臺返回的文件流( 類似于亂碼的東西 )
obj:下載文件名稱

//頁面中調(diào)用
this.fileDownload = (res,obj)

二、上傳 ( 基于vue )

1、頁面使用

<input type="file" ref="upload" @change='handleUploadChange($event)' style="display:none;">



 handleUploadFile(row){ // 通過某一事件觸發(fā) 
  this.$refs['upload'].click();
 },
 
 

  async handleUploadChange(e){ // 
   try{
    let res = await this.CommonUpload(e);
    if(res.code == '200'){ // 獲取其他code值,根據(jù)后臺來定
      this.handleProjectAddFile(res.data)
    }else{}
   }
    catch(err){}
  }

2、方法封裝 ( 只判斷大小,也可通過accept判斷要接收的類型 等其他類型 )

CommonUpload(e){ 
    const files = e.target.files;
    let formData = new FormData();
    if(files && files[0]) {
      const file = files[0];
      if(file.size > 1024 * 1024 *3) {
        alert('文件大小不能超過3M');
        return;
      } else {
        formData.append("multipartFile", file); 
      }
    }
    this.uploadFile_(formData) // 為調(diào)用上傳接口方法
  }

3、問題 當再次選擇同一文件時,失效

解決: ( 上傳后執(zhí)行下面 )
this.$refs['upload'].value = ''; // 解決 input file 第二次失效的問題

原因:
input file value值為新選中的值,所以下次再選同一文件,不會觸發(fā)change事件

以上就是本次介紹的全部相關(guān)知識點,如果有任何疑問和補充大家可以聯(lián)系小編,感謝大家對腳本之家的支持。

相關(guān)文章

  • 比較詳細的javascript DOM 學(xué)習筆記

    比較詳細的javascript DOM 學(xué)習筆記

    看了很多的js dom學(xué)習資料,發(fā)現(xiàn)這個比較詳細,特轉(zhuǎn)載給大家學(xué)習一下
    2008-06-06
  • JS如何為promise增加abort功能

    JS如何為promise增加abort功能

    這篇文章主要介紹了JS為promise增加abort功能,想了解JS異步的同學(xué),可以參考下
    2021-04-04
  • 文本框input聚焦失焦樣式實現(xiàn)代碼

    文本框input聚焦失焦樣式實現(xiàn)代碼

    文本框input聚焦失焦樣式實現(xiàn)代碼,需要的朋友可以參考下
    2012-10-10
  • js解析xml字符串和xml文檔實現(xiàn)原理及代碼(針對ie與火狐)

    js解析xml字符串和xml文檔實現(xiàn)原理及代碼(針對ie與火狐)

    分別針對ie和火狐分別作了對xml文檔和xml字符串的解析,考慮到了瀏覽器的兼容性,至于在ajax環(huán)境下解析xml,其實原理是一樣的,只不過放在了ajax里,還是要對返回的xml進行解析,感興趣的朋友可以了解下,或許對你學(xué)習js解析xml有所幫助
    2013-02-02
  • js數(shù)組實現(xiàn)權(quán)重概率分配

    js數(shù)組實現(xiàn)權(quán)重概率分配

    今天寫了一個js控制頁面輪播的功能,如果僅僅使用隊列很簡單,但是考慮到為每一個頁面分配權(quán)重的是否變的異常復(fù)雜,使用switch和if else也無法解決,于是想到使用js數(shù)組實現(xiàn)
    2017-09-09
  • JS閉包與延遲求值用法示例

    JS閉包與延遲求值用法示例

    這篇文章主要介紹了JS閉包與延遲求值,結(jié)合簡單實例分析了JS針對運算量較大的情況下閉包與延遲求值的實現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • javascript模塊化簡單解析

    javascript模塊化簡單解析

    這篇文章主要針對javascript模塊化為大家進行簡單解析,如何寫一個模塊,在頁面中加載模塊的方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 使用微信小程序開發(fā)彈出框應(yīng)用實例詳解

    使用微信小程序開發(fā)彈出框應(yīng)用實例詳解

    本文通過實例代碼給大家介紹了使用微信小程序開發(fā)彈出框功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • JavaScript實現(xiàn)簡單省市聯(lián)動

    JavaScript實現(xiàn)簡單省市聯(lián)動

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)簡單省市聯(lián)動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • js原生跨域_用script標簽的簡單實現(xiàn)

    js原生跨域_用script標簽的簡單實現(xiàn)

    下面小編就為大家?guī)硪黄猨s原生跨域_用script標簽的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論