zoukankan      html  css  js  c++  java
  • angular使用_HttpClient或者Fetch发送POST/GET请求下载/上传文件

    一:下载文件写法

    1.post请求_HttpClient写法、

    myTest() {
        const params = { aa: "aa", bb: "bb" }; // body的参数
        const url = 'http://10.10.10.22:8080/sss'
        const queryParams = undefined; // url query的参数
        this.http.post(url, params, queryParams, {
          responseType: "blob",
          headers: new HttpHeaders().append("Content-Type", "application/json")
        }).subscribe(res => {
          // res: 文件流
          this.downloadFile(res);
        })
      }
      /**
       * 创建blob对象,并利用浏览器打开url进行下载
       * @param data 文件流数据
       */
      downloadFile(data) {
        // 下载类型 xls
        const contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
        // 下载类型:csv
        // const contentType2 = 'text/csv';
        const blob = new Blob([data], { type: contentType });
        const url = window.URL.createObjectURL(blob);
        // 打开新窗口方式进行下载
        // window.open(url); 
        // 以动态创建a标签进行下载
        const a = document.createElement('a');
        const fileName = 'file';
        a.href = url;
        a.download = fileName + '.xlsx';
        a.click();
        window.URL.revokeObjectURL(url);
      }

    2.post请求使用Fetch  写法、

    requestData = {
            aa: aa,//這個給的是勾選的no列表
            bb: bb
          }
          //下载execl文件
          fetch(url, {
            method: "POST",
            headers: {
              'Content-Type': 'application/json'
            },
            body: JSON.stringify(requestData)
          })
            .then(res => res.blob())
            .then(data => {
              this.showSpin = false;
              let blobUrl = window.URL.createObjectURL(data)
              const a = document.createElement('a')
              a.style.display = 'none';
              a.setAttribute('target', '_blank');
              a.download = '<List>';
              a.href = blobUrl;
              a.click();
            })

     3.GET请求第一种写法、

    let url = `${BaseUrl.path}/aa/bb/cc?no=${this.sqcode}&pae=${this.wlName}&ase=${this.setDate(this.data[0])}&eae=${this.setDate(this.data[1])}&esy=${this.empId}&aay=${this.sqName}`;
          const a = document.createElement('a')
          a.style.display = 'none';
          a.setAttribute('target', '_blank');
          a.href = url;
          a.click();

    4.GET请求第二种写法、

     myExport() {
          
          var elemIF = document.createElement('iframe');
          elemIF.src = myUrl.myParticleBaseUrl + '/qqq/file?aaa=vvvvvfl';
          elemIF.style.display = 'none';
          document.body.appendChild(elemIF);
          
        },

    二:上传文件的写法

    三:VUE中上传一个文件给后端,后端返回另一个文件下载

    <template>
      <div>
        <!-- 導入 -->
        <a
          href="javascript:;"
          class="button_s my_file el-button button_s el-button--primary el-button--small"
        >
          <input id="upload" type="file" class="my_input" @change="importExcel" />上傳111
        </a>
        <!-- 導入 -->
      </div>
    </template>
    
    <script>
    import axios from 'axios'
    export default {
      data() {
        return {}
      },
      mounted() {},
      methods: {
        async importExcel(e) {
          const files = e.target.files
          if (files.length <= 0) {
            return false
          } else if (!/.(xlsx)$/.test(files[0].name.toLowerCase())) {
            alert('上传格式不正确,请上传xlsx格式')
            return false
          }
          this.fileName = files[0].name
          // 如果要發送後端處理,這個代碼1
          const url1 = 'http://10.10.10.10:8088/abc'
          const myformdataFile = new FormData()
          myformdataFile.append('file', e.target.files[0], 'a.xlsx')
          axios
            .post(url1, myformdataFile, {
              'responseType': 'blob',
              'Content-Type': 'application/json'
            })
            .then(({ data }) => {
              const contentType =
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
              // 下载类型:csv
              // const contentType2 = 'text/csv';
              const blob = new Blob([data], { type: contentType })
              const url = window.URL.createObjectURL(blob)
              // 以动态创建a标签进行下载
              const a = document.createElement('a')
              const fileName = 'file'
              a.href = url
              a.download = fileName + '.xlsx'
              a.click()
              window.URL.revokeObjectURL(url)
            })
          var input = document.getElementById('upload')
          input.value = ''
        }
        // 導入
      }
    }
    </script>
    <style lang="less" scoped>
    </style>
  • 相关阅读:
    1_Flask开启debug
    29_使用celery发送短信
    00_celery介绍(处理耗时任务)
    28_django限制请求方法装饰器
    27_扩展User模型
    05-3_单链表的实现
    05-2_单向链表
    05-1_链表的定义
    04-2_Python中的线性表
    04-1_线性表的操作
  • 原文地址:https://www.cnblogs.com/sugartang/p/12988864.html
Copyright © 2011-2022 走看看