zoukankan      html  css  js  c++  java
  • 通过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();

  • 相关阅读:
    《Eclipse中的一些快捷键》
    《Java中的抽象类及抽象类的作用》
    《Java中的不可变类》
    《final修饰基本类型变量和引用类型变量的区别》
    《类成员案例》
    《Java中的单例模式--两种》
    《Java中的自动装箱和拆箱功能.》
    Chrome 经典插件
    Sublimeの虚拟环境(Venv)设置
    HTTP下午茶
  • 原文地址:https://www.cnblogs.com/strangerqt/p/5772966.html
Copyright © 2011-2022 走看看