一:下载文件写法

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>

angular使用_HttpClient或者Fetch发送POST/GET请求下载/上传文件的更多相关文章

  1. Python3+Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)'''from seleni ...

  2. c#代码发送post请求,上传文件(并带其他参数)

    本人对post理解不深,前段时间遇到一个需要用c#代码发送post请求上传文件的业务,于是参考了几篇帖子,加上自身实践写出了如下代码.写的比较low 望各位大大指正^_^. 业务需求: 对方给了一个接 ...

  3. restTemple发送请求、上传文件(@LoadBalanced微服务调用及url调用)

    import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Co ...

  4. Django学习——ajax发送其他请求、上传文件(ajax和form两种方式)、ajax上传json格式、 Django内置序列化(了解)、分页器的使用

    1 ajax发送其他请求 1 写在form表单 submit和button会触发提交 <form action=""> </form> 注释 2 使用inp ...

  5. fetch发送Form Data请求并携带cookie

    今天我们来说说如何fetch发送Form Data请求并携带cookie,直接进入正题好吧,别问我今天为啥不在开始吹两句了,累到一句牛逼不想吹...... 步骤1: 设置头部,"Conten ...

  6. fetch上传文件报错的问题(multipart: NextPart: EOF)

    技术栈 后台: gin(golang) 前端: react+antd+dva 问题 前端这边使用fetch发送http请求的时候,后端解析formData报错: multipart: NextPart ...

  7. Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件(二)

    Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件第二版 上次粗略的写了相同功能的代码,这次整理修复了之前的一些BUG,结构也大量修改 ...

  8. java前后分离使用fetch上传文件失败500

    这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题 背景 使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思. 由于本 ...

  9. 【httpclient-4.3.1.jar】httpclient发送get、post请求以及携带数据上传文件

    1.发送get.post携带参数以及post请求接受JSON数据: package cn.qlq.utils; import java.io.BufferedReader; import java.i ...

  10. Springboot第三篇:与前端fetch通信(关于前端传输json数据上传文件等等前后端的处理)

    关于前端接口传递的方法,推荐按以下使用: 若要在服务器上创建资源,推荐使用POST方法 若要检索某个资源,推荐使用GET方法 若要更新资源,推荐使用PUT方法 若要删除某个资源,推荐使用DELETE方 ...

随机推荐

  1. 安装zabbix-agent2之ansible-playbook

    zabbix被监控端安装zabbix-agent2之ansible-playbook --- - name: install agent hosts: all vars: server_host: & ...

  2. pod(八):pod的调度——将 Pod 指派给节点

    目录 一.系统环境 二.前言 三.pod的调度 3.1 pod的调度概述 3.2 pod自动调度 3.2.1 创建3个主机端口为80的pod 3.3 使用nodeName 字段指定pod运行在哪个节点 ...

  3. Codeforces Round #811 (Div. 3)D. Color with Occurrences

    题目大意:给出一个文章t和n个字符串s1,s2...sn: 问能否用这n个字符串将整个文章覆盖: 思路:贪心(最小区间覆盖) 记录每个字符串能够覆盖的所有位置(起点,终点,编号) 排序后贪心的求出是否 ...

  4. Https Webservice接口的免证书调用

    目录 前言 思路 方案 Axis调用 HttpClient调用 参考链接 前言 在调用https协议的Webservice接口时,如果没有做证书验证,一般会报javax.net.ssl.SSLHand ...

  5. [zoj] 4178. Killing the Brute-force

    题目 Chenjb is the task author of the 71-st Zhejiang Provincial Collegiate Programming Contest. He cre ...

  6. hwlog----types.go

    // Copyright(C) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package hwlog provides the ...

  7. 超精准!AI 结合邮件内容与附件的意图理解与分类!⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 TensorFlow 实战系列:https://www.showmeai ...

  8. Codeforces Round #835 (Div. 4) A-G

    比赛链接 A 题意 给出三个不同的数,求中位数. 题解 知识点:模拟. 显然. 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include <bits/stdc++.h& ...

  9. ValueError: Detected newline in header value. This is a potential security problem

    原因 flask框架进行重定向的url中包含 换行符\n或\r 解决方法 使用 strip() 函数去除行首或行尾的换行符(如果你url中间包含这些符号replace函数替换, 但是如果中间包含只能说 ...

  10. 关于linux更改root用户下面的鼠标样式

    前言 这几天一直研究关于 lightmd 显示管理器(也就是刚进入系统的用户登录界面)的主题配置问题,我发现鼠标样式和登录个人用户的鼠标样式不一样(之前我也发现了,懒得捣鼓)今天抽出时间研究了一下,这 ...