91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用原生js實現文件上傳、下載、封裝等實例

發布時間:2021-04-19 10:16:42 來源:億速云 閱讀:370 作者:小新 欄目:web開發

這篇文章給大家分享的是有關如何使用原生js實現文件上傳、下載、封裝等實例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一 、下載

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:下載文件名稱

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

二、上傳 ( 基于vue )

1、頁面使用

<input type="file" ref="upload" @change='handleUploadChange($event)' >



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

  async handleUploadChange(e){ // 
   try{
    let res = await this.CommonUpload(e);
    if(res.code == '200'){ // 獲取其他code值,根據后臺來定
      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) // 為調用上傳接口方法
  }

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

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

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

感謝各位的閱讀!關于“如何使用原生js實現文件上傳、下載、封裝等實例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

南丹县| 平度市| 甘德县| 华坪县| 洱源县| 德庆县| 时尚| 乐清市| 磐石市| 蒙山县| 疏勒县| 随州市| 丰都县| 财经| 山东| 凌海市| 江源县| 阿拉善盟| 浦江县| 赤壁市| 嘉禾县| 那坡县| 武鸣县| 永川市| 随州市| 日照市| 桓台县| 木兰县| 绥阳县| 安远县| 枞阳县| 区。| 河南省| 大港区| 玉屏| 营山县| 余姚市| 开阳县| 托克逊县| 集安市| 武城县|