为了账号安全,请及时绑定邮箱和手机立即绑定

Java通过httpResponse spring boot下载文件

Java通过httpResponse spring boot下载文件

慕尼黑5688855 2023-06-14 15:38:40
我想从网站的服务器下载一个 pdf 文件。当我按下一个按钮时,我向 spring boot 服务器发送了一个 ajax 请求。我创建了 httpservletresponse 的输出流并将文件字节写入其中。在 javascript 中我得到了 pdf 文件信息,但我不知道如何下载它们。我认为问题是jquery中的调用。我不确定我是否使用了正确的内容类型。这是我的请求的请求和响应标头:Request-Headers    Accept: application/json, text/javascript, */*; q=0.01    Accept-Encoding: gzip, deflate, br    Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7    Connection: keep-alive    Content-Type: application/pdf    Host: localhost:8080    Referer: http://localhost:8080/arbeitsvorratsliste    Sec-Fetch-Mode: cors    Sec-Fetch-Site: same-origin    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3880.4 Safari/537.36    X-Requested-With: XMLHttpRequestResponse-HeadersCache-Control: no-cacheContent-Disposition: attachment; filename=44005001.25759.pdfContent-Encoding: UTF-8Content-Type: application/pdf;charset=ISO-8859-1Date: Mon, 19 Aug 2019 07:38:36 GMTExpires: 0Transfer-Encoding: chunked@GetMapping("/print.do")public void doPrint(){    final HttpServletResponse response = getResponse();    RequestUtils.setResponseHeaders(response, "44005001.25759.pdf");    Path path = Paths.get(settings.getPrintPath() + "\\44005001.25759.pdf");    try    {        ServletOutputStream out = response.getOutputStream();        InputStream in = new ByteArrayInputStream(Files.readAllBytes(path));        byte[] outputByte = new byte[4096];        // copy binary contect to output stream        while (in.read(outputByte, 0, 4096) != -1)        {            out.write(outputByte, 0, 4096);        }        in.close();        out.flush();        out.close();    }    catch (IOException e)    {        LOG.error("WorkListController.doPrint(): Error while read from file.", e);    }    finally    {    }}
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我发现了问题,如果你想下载一个文件,你必须添加注解@PostMapping 和@ResponseBody。在 javascript 中,我没有调用 ajax 请求,但我调用了表单提交。



查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 273 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信