一般下载文件,常见使用的是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. [Libre 6281] 数列分块入门 5 (分块)

    水一道入门分块qwq 题面:传送门 开方基本暴力.. 如果某一个区间全部都开成1或0就打上标记全部跳过就行了 因为一个数开上个四五六次就是1了所以复杂度能过233~ code: //By Menteu ...

  2. cmake处理多源文件目录

    cmake处理多源文件目录 假设我们的源文件全部在src中,则我们需要在子文件src中建立文件CmakeLists.txt,内容如下: AUX_SOURCE_DIRECTORY(. DIR_TEST_ ...

  3. <url-pattern>/</url-pattern> 拦截请求

    一.springmvc 前端控制器 <!-- springmvc的前端控制器 --> <servlet> <servlet-name>fw-sso-web</ ...

  4. switch 的穿透, 以及穿透利用

    switch 穿透测试: outputs: 添加break 阻止switch穿透: outputs: 利用switch的穿透功能:

  5. hdu 4607 树形dp 树的直径

    题目大意:给你n个点,n-1条边,将图连成一棵生成树,问你从任意点为起点,走k(k<=n)个点,至少需要走多少距离(每条边的距离是1): 思路:树形dp求树的直径r: a:若k<=r+1 ...

  6. HDU 5172

    超内存了,呃...不知道如何优化了. 首先要判断区间的和是否和1~n的和相等. 再个,记录下每个数字前一次出现的位置,求这些位置的最大值,如果小于左端点,则表示有这样的一个序列. 呃~~~第二个条件当 ...

  7. 基于lucene的案例开发:纵横小说分布式採集

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/46812645 http://www.llwjy.com/blogdetail/9 ...

  8. mysql安装出错cannot create windows service for mysql.error:0

    配置时最后一步出现不能启动mysql 解决成功的办法:[MySQL] Could not start the service MySQL 解决方法 安装mysql 5.1.33,在运行Server I ...

  9. Registry Connect failed,Windows服务诊断

    Message:Connection failed for 192.168.32.38_e-futrueserer. Details:Windows Registry Datasource: Regi ...

  10. c7---函数

    // // main.c // 函数练习 // // Created by xiaomage on 15/6/7. // Copyright (c) 2015年 xiaomage. All right ...