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();

  • 相关阅读:
    Redis(二) 扩展
    Redis(一)基础
    Java垃圾回收机制 入门
    freeregex-0.01 使用文档
    上传文件到阿里云linux服务器
    jQuery代码解释(基本语法)
    JQuery中使用FormData异步提交数据和提交文件
    jQuery获取data-*属性值
    jquery 中 $.map 的使用方法
    mysql创建表时反引号的作用
  • 原文地址:https://www.cnblogs.com/strangerqt/p/5772966.html
Copyright © 2011-2022 走看看