qq_26290227
蓝胧月
采纳率66.7%
2019-12-18 17:46

url传参为空怎么解决?

5
已采纳

url=append+'/report/download2.do?name='+name传到后台name为空。

js

$("#btn_his_download").on("click", function () {
    var name = $("#lines").find("option:selected").text();
    var $form = $('<form method="GET"></form>');
    $form.attr('action', appName + '/report/download2.do?name='+name);
    $form.appendTo($('body'));
    $form.submit();
});

controller

@RequestMapping("/download2.do")
public void download2(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String name = request.getParameter("name");
    System.out.println(name);
    String fileName = request.getSession().getServletContext().getRealPath("tcc/reports/upload/")+name;
    InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
    name = URLEncoder.encode(name,"UTF-8");
    response.addHeader("Content-Disposition", "attachment;filename=" + name);
    response.setContentType("multipart/form-data");
    BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
    int len = 0;
    while((len = bis.read()) != -1){
        out.write(len);
        out.flush();
    }
    out.close();
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • wojiushiwo945you 毕小宝 2年前

    为空,可能是 var name = $("#lines").find("option:selected").text(); 这里取值时为空。
    F 12 看看浏览器发送请求时的参数中 name 是否为空。

    点赞 3 评论 复制链接分享
  • loney_wolf 轻点 别打脸 2年前

    1、表单提交的时候name取值是否是为空的,这里检查一下
    2、request IO读取是一次性的,读取之后流消失,不能读取第二次。检查一下在你获取参数前有没有对这个进行读取。
    debug断点,看request请求参数里面是否有传递过来值,具体定位到是否是请求中丢失了参数。
    3、可以将get请求换成post请求

    点赞 评论 复制链接分享