Java 从Servlets下载文件-Chrome警告+;下载后如何重定向用户?

Java 从Servlets下载文件-Chrome警告+;下载后如何重定向用户?,java,jakarta-ee,servlets,Java,Jakarta Ee,Servlets,我有一个带有downlod文件链接的简单表 一切似乎都很好,当我单击下载时,文件在硬盘上找到并提供给用户 我的问题是,当我检查chrome时,我看到: Resource interpreted as Document but transferred with MIME type application/octet-stream: "http://localhost:8080/fus-app/myUploadedFiles". 为什么会这样说 我拥有的相关代码是: httpServlet

我有一个带有downlod文件链接的简单表

一切似乎都很好,当我单击下载时,文件在硬盘上找到并提供给用户

我的问题是,当我检查chrome时,我看到:

Resource interpreted as Document but transferred with MIME type application/octet-stream: "http://localhost:8080/fus-app/myUploadedFiles".
为什么会这样说

我拥有的相关代码是:

    httpServletResponse.setContentType("application/octet-stream");
    httpServletResponse.setHeader("Content-Disposition", "attachment; filename=\"" + fileNameOnSystem + "\"");
还有一个额外的问题:

下载文件后,用户仍然可以看到带有表的页面,但我想重定向到其他页面。我该怎么做

 response.sendRiderect() 
似乎不起作用

编辑:这是我向用户提供下载链接的方式:

<form method="post" action="<%= request.getServletContext().getContextPath() +"/myUploadedFiles" %>">
    <input type="hidden" name="fileNameOnSystem" value="<%= rset.getString("fileNameOnSystem") %>" />
    <button type="submit" class="btn btn-default" />Download File </button>
</form>

下载文件

尝试在下载链接中指定HTML5下载属性:

<a href='http://example.com/archive.zip' download>Export</a>

至于重定向,这里不是好消息

HttpServletResponse的“已提交”状态实际上是一种 说明是否已将响应头写入 底层套接字。“承诺”的回应(至少)是第一个 行写的。因为响应的第一行包含状态 代码,因此您不能更改已提交文件的状态代码 回应。。。这意味着将状态更改为3xx为时已晚 进行重定向。类似地,您不能执行本地转发,因为 您已经开始发送响应

因此,在发送文件(这是一个已提交的响应)后,您将无法对响应执行更多操作。但是,您可以先将它们转发到另一个页面,然后让该页面显示一条消息,并最终触发下载

找到以下示例:

<html>  
<head>  
<meta http-equiv="refresh" content="5;url=http://server.com/file.zip">  
</head>  
<body>  
Thank you for downloading file.zip!  
</body>  
</html> 

感谢您下载file.zip!

谢谢你的回答,我已经编辑了我的问题。实际上,文件在驱动器中的某个位置,因此我必须从servlet提供文件,我无法直接链接到该文件。系统上的文件名类似于:test1234.pdf,并且我知道它位于哪个目录(如C:\appuser\test1234.pdf),因此我可以提供该文件。因此,我只能向servlet提供某种参数,然后我给出文件。您应该能够提供servlet处理的URL。客户机不知道它是否是一个实际的文件,或者您只是在生成随机位。因此,如果您的servlet处理woogie.com/somefile,您仍然可以将:
放在您的网页上。