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>
  • 相关阅读:
    浏览器刷新缓存机制
    Asp.Net获取IP的方法
    c# 了解委托
    用什么方法来判断字符串是否存在的函数
    怎么样从地址中获得数据?
    新网站如何不被百度查封,请注意以下事项。
    搜索引擎如何抓取网页和如何索引网页?
    什么情况下include_path不起作用?
    用户注册演示程序操作案例
    用户提交的cookie提交时为什么传不到服务器
  • 原文地址:https://www.cnblogs.com/sugartang/p/12988864.html
Copyright © 2011-2022 走看看