一般下载文件,常见使用的是window.open('url');方法进行下载。若需要带参数,直接在url后面拼接参数,进行传递。window.open方法仅可以进行get方法进行参数提交。例如:

 // get方法下载文件
import { getToken } from '@/utils/auth'
function loadFileGet(url) {
window.open(url+'?token='+getToken())
}

若需要进行post方法提交,则有点麻烦,经过网上的方法进行参数,最后自己整理出能用的方法:

方法一:

 handleExport(){
const url='/api/admin/gateLog/export';
const downloadHelper = $('<iframe style="display:none;" id="downloadHelper"></iframe>').appendTo('body')[0];
const doc = downloadHelper.contentWindow.document;
if (doc) {
doc.open();
doc.write('');//微软为doc.clear()有时会出bug
doc.writeln("<html><body><form id='downloadForm' name='downloadForm' method='post' action='"+ url+"'>");
const queryParam = this.listQuery;
for(let key in queryParam){
doc.writeln("<input type='hidden' name='"+key+"' value='"+queryParam[key]+"'>");
}
doc.writeln('<\/form><\/body><\/html>');
doc.close();
const form = doc.forms[0];
if (form) {
form.submit();
}
}
}
其中, const queryParam = this.listQuery,中listQuery中获取的数据是一个obj对象,
const queryParam={page: 1,limit: 20,menu_EQ_S: undefined,crtName_EQ_S: undefined,crtHost_EQ_S: undefined}
方法二:
 // form-data方式提交数据进行下载
// $tg表示整个当前页面的this.
function uploadFileFormData($tg,rspUrl) {
MessageBox.confirm('是否对当前搜索条件下的数据进行导出操作?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonClass: 'importantCls roundDialog',
cancelButtonClass: 'roundDialog',
type: 'warning'
}).then(() => {
const params = Object.keys($tg.listQuery).map(key => {
if($tg.listQuery[key] && key != 'page' && key != 'limit') {
return encodeURIComponent(key) + "=" + encodeURIComponent($tg.listQuery[key]);
}
}).join("&");
const url = rspUrl+'?token=' + getToken() + "&" + params;
const $form = $("<form id='exportData' class='hidden' method='POST' action='" + url + "'></form>");
$("body").append($form);
$form.submit();
})
}
 


页面下载文件方法,post与get的更多相关文章

  1. .NET两种常见上传下载文件方法

    1.FTP模式 代码如下: (1)浏览 /// <summary> /// 浏览文件 /// </summary> /// <param name="tbCon ...

  2. 前端通过url下载文件方法

    前端通过url下载文件方法 产生背景 浏览器通过url下载文件,当浏览器识别出资深能播放的资源文件,就不会走下载流程,会直接打开 解决方法 1.让后台转成请求的方式,输出文件流(如果想实现批量下载-因 ...

  3. js页面(页面上无服务端控件,且页面不刷新)实现请求一般处理程序下载文件方法

    对于js页面来说,未使用服务端控件,点击下载按钮时不会触发服务端事件,且不会提交数据到服务端页面后台进行数据处理,所以要下载文件比较困难.且使用jQ的post来请求一般处理程序也不能实现文件的下载,根 ...

  4. net下载文件方法汇总

    //TransmitFile实现下载 protected void Button1_Click1(object sender, EventArgs e) { /* 微软为Response对象提供了一个 ...

  5. 前端通用下载文件方法(兼容IE)

    之前在网上看到一个博主写的前端通用的下载文件的方法,个人觉得很实用,所以mark一下,方便以后查阅 源文地址(源文还有上传/下载excel文件方法) 因为项目要求要兼容IE浏览器,所以完善了一下之前博 ...

  6. .net下载文件方法

    1.以文件流下载 byte[] fileStr=new byte[5]; MemoryStream btMs = new MemoryStream(fileStr); //以字符流的形式下载文件 by ...

  7. ASP.NET 后台下载文件方法

    void DownLoadFile(string fileName) { string filePath = Server.MapPath(fileName);//路径 //以字符流的形式下载文件 F ...

  8. asp.net mvc5 下载文件方法

    控制器自带的 FileContentResult 可以让我们很方便的返回文件到服务端,减少了很多步骤.用于下载文件的时候,像视频.文本.图片这种浏览器支持的文件,默认就会被浏览器打开.这时候想让它变成 ...

  9. Java下载文件方法

    public static void download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径. F ...

随机推荐

  1. web前端对文件的引用规则

    web前端一般常用文件 .html .css .js.但是当用css文件和html引入资源(比如图片)时,路径可能不相同.下面总结了几条. 使用相对路径引入规则: html或者js引入图片,按照htm ...

  2. Ubuntu中打开RAR文件

    在安装完ubuntu后,默认是不支持RAR文档的,当用鼠标双击一个RAR文档的时候会给我们上面的提示! 如果想打开RAR的文档就需要安装一个RAR解析,方法是打开终端,输入: 复制代码代码如下: su ...

  3. 【ACM-ICPC 2018 南京赛区网络预赛 E】AC Challenge

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 写个DP 设f[j]表示已经做的题的状态为j的情况下接着选能获得的最大分数. 显然是个倒推. 记忆化搜索一波 dfs(i,j) 表示 ...

  4. Mysql学习总结(37)——Mysql Limit 分页查询优化

    select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select * from table ...

  5. FreeMarker 页面静态化解决方案

    一.网页的静态化方案 1.生成静态页面的时机:在做添加操作时,同时生成该新增内容的对应的静态页面 2.静态页面的名称:内容 id + ".html" 3.静态页面所在的路径:工程外 ...

  6. BA-BACnet对象

    BACNET协议有多少个对象呢,拿出西门子教程中的看看一下,居然有48个,其中的大部分都没有用到:

  7. OJ刷题---手机尾号评分

    题目要求: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dis ...

  8. Codeforces Round #257(Div. 2) B. Jzzhu and Sequences(矩阵高速幂)

    题目链接:http://codeforces.com/problemset/problem/450/B B. Jzzhu and Sequences time limit per test 1 sec ...

  9. TeamTalk Android代码分析(业务流程篇)---消息发送和接收的整体逻辑说明

    第一次纪录东西,也没有特别的顺序,想到哪里就随手画了一下,后续会继续整理- 6.2消息页面动作流程 6.2.1 消息页面初始化的总体思路 1.页面数据的填充更新直接由页面主线程从本地数据库请求 2.数 ...

  10. 视差滚动demo (pc)

    根据设计图设定每屏的高度,js会自动缩放到全屏尺寸,效果要大尺寸才能看的出来 demo :http://runjs.cn/detail/uvizsekd <!DOCTYPE html> & ...