通过form表单的形式下载文件。
在项目中遇到问题,要求动态拼接uri下载文件。但是由于项目的安全拦截导致window.location.href 和 window.open等新建窗口的方法都不行。
无意间百度到了通过form表单来下载的方法,具体如下。
1,form的action设置为接口地址,method设置为post,Post到后台的数据设置为input的属性 name = key,value = value的形式,如果有多个key、value的值要传递,那么就设置多个input来分别储存单个的key、value;
2, 如果请求的接口可以不需要参数,那么input还是必须要一个,如果不要得话 会引起接口报错
原理:form的action相当于一个浏览器本页签/页面的一个请求,不会被后台,前台的路由拦截。所以能够提交成功。
注意点:如果设置method为get,在action中的uri添加了参数的话,想用这个参数替代input的key、value形式来提交到后台,这参数是没有效果的,后台拿不到这些参数,真正的参数还是以input的name、value的形式储存,在submit方法执行后传递到后台。
代码:
POST
let idInput = ary.map(item => {
return `<input type='hidden' name='idList' value=${item.id}/>`;
}).join('');
let url = `http://${pkg.config.devHost +":"+pkg.config.devPort}/api/entity/manager/export`
$(`<form method='get' action='${url}'></form>`)
.appendTo('body')
.HTML(idInput)
.submit()
.remove();
最新文章
- 关于如何通过json更改背景图片
- 面试中遇到的iOS笔试题
- [SoapUI] 同一个Resource不同参数时,在两个step里默认打开总是同一个Resource
- C# 文件流相关操作
- IOS基础之设置APP的名字、设置图标、添加等待加载时的图片
- OpenCV入门学习笔记
- Oracle数据表恢复
- ubuntu远程连接
- java反射获取注解并拼接sql语句
- jfianl返回自定义的404页面
- PL/SQL developer 管理多套数据库
- node源码详解(四) —— js代码如何调用C++的函数
- 使用getCurrentPosition方法实时获取当前Geolocation信息(赋源码文件)--html5、JavaScript
- 在线教育平台搭建 预览和models
- redis在java客户端的操作
- java类的继承(基础)
- 玩转3D Swiper美女性感秀之思路分析总结
- 使用WinForm Chart控件 制作饼装,柱状,折线图
- ACM-ICPC 2018 南京赛区网络预赛 J.sum(欧拉筛)
- JavaScript变量提升的理解