• 通过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();

  • 相关阅读:
    微软免费人工智能课程
    如何定义,创建,启动一个线程
    什么是进程,什么是线程?
    Hashtable 数据遍历的几种方式
    action中result没有值
    <global-results>怎么用
    普通请求和ajax请求的区别
    result默认返回action中的所有数据,要想返回指定的数据怎么做呢
    ajax技术的应用?
    什么是国际化
  • 原文地址:https://www.cnblogs.com/strangerqt/p/5772966.html
Copyright © 2020-2023  润新知