<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      前端vue 封裝上傳文件和下載文件的方法 導入方法直接使用

      1、上傳文件
      upload.js

      import axios from 'axios'
      import { Message } from "element-ui";
      
      //  * 封裝上傳文件的post方法
      //  * @param url
      //  * @param data
      //  * @returns {Promise}
      
      // 接口域名地址
      // let baseURL = process.env.VUE_APP_API_BASE_URL
      let baseURL = 'https://jiangsihan.cn/'
      
      // 導出方法
      export function uploads(url, file) {
          return uploadData(url, file)
      }
      
      
      function uploadData(url, file) {
          // 創(chuàng)建 FormData 對象
          let formData = new FormData();
          // 通過 append() 方法來追加數(shù)據(jù)
          formData.append("file", file)
          return new Promise((resolve, reject) => {
              axios.post(baseURL + url, formData, {
                  headers: {
                      'Content-Type': 'multipart/form-data',
                      'X-Access-Token': localStorage.getItem('token'),
                  }
              }).then(response => {
                  resolve(response)
              }).catch(error => {
                  // 錯誤響應處理
                  if (error.response) {
                      // 對響應錯誤做點什么
                      switch (error.response.status) {
                          case 403:
                              Message({ message: '拒絕訪問', type: 'error' });
                              break
                          case 500:
                              Message({ message: '很抱歉,登錄已過期,請重新登錄', type: 'error' });
                              localStorage.clear();
                              sessionStorage.clear()
                              setTimeout(() => {
                                  window.location.reload()
                              }, 1000)
                              break
                          case 404:
                              Message({ message: '很抱歉,資源未找到!', type: 'error' });
                              break
                          case 405:
                              Message({ message: '請求方式錯誤!', type: 'error' });
                              break
                          case 504:
                              Message({ message: '網(wǎng)絡超時!', type: 'error' });
                              break
                          case 401:
                              Message({ message: '未授權,請重新登錄!', type: 'error' });
                              localStorage.clear();
                              sessionStorage.clear()
                              setTimeout(() => {
                                  window.location.reload()
                              }, 1000)
                              break
                          default:
                              Message({ message: data.message, type: 'error' })
                              break
                      }
                  }
                  reject(error)
              })
          })
      }
      導入:
      import { uploads } from '../../utils/upload';
      使用:
      let url = '接口地址后綴'
      // file file對象格式 詳細見下方
      uploads(url, file).then(res => {
          if (res.data.errCode == 0) {
              Message({ type: 'success', message: '上傳成功', duration: 1000 })
              resolve(res)
          }
          resolve(res)
      }).catch(err => {
          reject(err)
      });
      補充說明:
      目前各大UI庫都有upload上傳文件的組件,內(nèi)置方法就含有file對象,拿到后傳入即可

                                                                                                                                                               

       

      2、下載文件
      download.js

      // 文件下載
      
      // let baseURL = process.env.VUE_APP_API_BASE_URL  //服務器地址
      let baseURL = 'https://jiangsihan.cn/'
      
      //通過文件下載url拿到對應的blob對象
      function getBlob(url) {
        return new Promise(resolve => {
          const xhr = new XMLHttpRequest()
          xhr.open('GET', url, true)
          xhr.responseType = 'blob'
          xhr.onload = () => {
            if (xhr.status === 200) {
              resolve(xhr.response)
            }
          }
      
          xhr.send()
        })
      }
      //下載文件   js模擬點擊a標簽進行下載
      function saveAs(blob, filename) {
        var link = document.createElement('a')
        link.href = window.URL.createObjectURL(blob)
        link.download = filename
        link.click()
      }
      
      
      // url 文件地址后綴  fileName文件名稱
      export function downloadEvt(url, fileName) {  //導出
        let fileUrl = baseURL + url
        getBlob(fileUrl).then(blob => {
          saveAs(blob, fileName)
        })
      }
      
      /**
            * download的屬性是HTML5新增的屬性
            * href屬性的地址必須是非跨域的地址,如果引用的是第三方的網(wǎng)站或者說是前后端分離的項目(調(diào)用后臺的接口),這時download就會不起作用。
            * 此時,如果是下載瀏覽器無法解析的文件,例如.exe,.xlsx..那么瀏覽器會自動下載,但是如果使用瀏覽器可以解析的文件,比如.txt,.png,.pdf....瀏覽器就會采取預覽模式
            * 所以,對于.txt,.png,.pdf等的預覽功能我們就可以直接不設置download屬性(前提是后端響應頭的Content-Type: application/octet-stream,如果為application/pdf瀏覽器則會判斷文件為 pdf ,自動執(zhí)行預覽的策略)
      */
      導入:
      import { downloadEvt } from "@/utils/download";
      使用:
      downloadEvt(url, fileName);
      posted @ 2024-04-07 16:03  青春?自由?旅行  閱讀(13)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av无码成人影院一区| 成人国产精品一区二区网站公司| 亚洲男人在线天堂| 九九热在线这里只有精品| 真实国产老熟女无套中出| 亚洲一区成人av在线| 色综合中文综合网| 少妇激情一区二区三区视频| 亚洲乱码一卡二卡卡3卡4卡| 深夜av免费在线观看| 麻豆成人久久精品二区三| 亚洲精品乱码久久久久久中文字幕| 国产免费一区二区不卡| 日韩卡一卡2卡3卡4卡| 国产精品中文第一字幕| 激情伊人五月天久久综合| 亚洲一区二区av高清| 亚洲人成电影在线天堂色| 和顺县| 被黑人巨大一区二区三区| 国产精品中文字幕综合| 亚洲色偷拍区另类无码专区| 蜜臀av入口一区二区三区| 国产精品激情av在线播放| 日本人妻巨大乳挤奶水免费| 成人性生交大片免费看r老牛网站| 婷婷99视频精品全部在线观看| 加勒比无码专区中文字幕| 国产二区三区不卡免费| 国精一二二产品无人区免费应用 | 永久黄网站色视频免费直播| 欧美成人精品一级在线观看| 二区三区国产在线观看| 十八禁午夜福利免费网站| 精品国产亚洲一区二区三区| 天堂网亚洲综合在线| 亚洲码与欧洲码区别入口| 国产成人精品午夜在线观看| 国产精品国产三级国产试看| 综合图区亚洲另类偷窥| 日韩亚洲精品中文字幕|