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>
angular使用_HttpClient或者Fetch发送POST/GET请求下载/上传文件的更多相关文章
- Python3+Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)'''from seleni ...
- c#代码发送post请求,上传文件(并带其他参数)
本人对post理解不深,前段时间遇到一个需要用c#代码发送post请求上传文件的业务,于是参考了几篇帖子,加上自身实践写出了如下代码.写的比较low 望各位大大指正^_^. 业务需求: 对方给了一个接 ...
- restTemple发送请求、上传文件(@LoadBalanced微服务调用及url调用)
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Co ...
- Django学习——ajax发送其他请求、上传文件(ajax和form两种方式)、ajax上传json格式、 Django内置序列化(了解)、分页器的使用
1 ajax发送其他请求 1 写在form表单 submit和button会触发提交 <form action=""> </form> 注释 2 使用inp ...
- fetch发送Form Data请求并携带cookie
今天我们来说说如何fetch发送Form Data请求并携带cookie,直接进入正题好吧,别问我今天为啥不在开始吹两句了,累到一句牛逼不想吹...... 步骤1: 设置头部,"Conten ...
- fetch上传文件报错的问题(multipart: NextPart: EOF)
技术栈 后台: gin(golang) 前端: react+antd+dva 问题 前端这边使用fetch发送http请求的时候,后端解析formData报错: multipart: NextPart ...
- Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件(二)
Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件第二版 上次粗略的写了相同功能的代码,这次整理修复了之前的一些BUG,结构也大量修改 ...
- java前后分离使用fetch上传文件失败500
这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题 背景 使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思. 由于本 ...
- 【httpclient-4.3.1.jar】httpclient发送get、post请求以及携带数据上传文件
1.发送get.post携带参数以及post请求接受JSON数据: package cn.qlq.utils; import java.io.BufferedReader; import java.i ...
- Springboot第三篇:与前端fetch通信(关于前端传输json数据上传文件等等前后端的处理)
关于前端接口传递的方法,推荐按以下使用: 若要在服务器上创建资源,推荐使用POST方法 若要检索某个资源,推荐使用GET方法 若要更新资源,推荐使用PUT方法 若要删除某个资源,推荐使用DELETE方 ...
随机推荐
- vue2 解决跨域
vue2.x 解决跨域 通过devServer将接口代理到本地在开发的时候,需要请求同局域网内的接口,发现直接使用http://对方的ip地址/接口路径,会出现类似下图的跨域报错 找到并打开vue.c ...
- Windows7下驱动开发与调试体系构建——4.在x64下使用汇编代码(x86下的_asm)
目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html asm文件设置 在vs x64中无法使用_asm关键字,需要使用.asm文件. 按第 ...
- Java单例模式,看这一篇就够了
在创建型设计模式中,我们第一个学习的是单例模式(Singleton Pattern),这是设计模式中最简单的模式之一. 单例是什么意思呢? 单例就是单实例的意思,即在系统全局,一个类只创建一个对象,并 ...
- ElasticSearch这些坑记得避开
目录 一.管理方式 二.结构维护 三.数据调度 1.同步方案 2.中断和恢复 四.刷新策略 五.深度分页 六.参考源码 Index用不好,麻烦事不会少: 一.管理方式 ElasticSearch作为最 ...
- Codeforces Global Round 23 D.Paths on the Tree(记忆化搜索)
https://codeforces.ml/contest/1746/problem/D 题目大意:一棵n节点有根树,根节点为1,分别有两个数组 s[i] 顶点 i 的魅力值 c[i] 覆盖顶点 i ...
- jvm之垃圾收集一之垃圾回收算法
最近又重新在读深入理解java虚拟机一书,吸取第一次读完到现在已经忘记的差不都的教训,这次的学习之旅想通过博客的形式记录下自己的所学所感,以备后续继续学习备忘所用!这次先记录下垃圾收集相关知识点: 垃 ...
- Vue3 企业级优雅实战 - 组件库框架 - 3 搭建组件库开发环境
前文已经初始化了 workspace-root,从本文开始就需要依次搭建组件库.example.文档.cli.本文内容是搭建 组件库的开发环境. 1 packages 目录 前面在项目根目录下创建了 ...
- Go语言核心36讲04
我们已经知道,环境变量GOPATH指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件. 这里的源码文件又分为三种,即:命令源码文件.库源码文件和测试源码文件,它们都有着不同的 ...
- 【终极解决办法】pyinstaller打包exe没有错误,运行exe提示Failed to execute script 'mainlmageWindows' due tounhandled exception: No module named 'docx'
一.通过pyinstaller打包exe可执行文件,由于我的py是多个,所以要先生成spec文件,代码如下: pyi-makespec mainImageWindows.py 此时生产了一个mainI ...
- Excel2010表格内容被加密,无法编辑内容。
Sub PasswordBreaker() Dim i As Integer, j As Integer, k As Integer Dim l As Integer, m As Integer, n ...