当我从春天控制器打开文件sen't出现“缺少文件名头”错误

问题描述 投票:-1回答:2

我们有一个Java Web应用程序,其中有下载一个可执行文件(.exe)的一个功能。当我打开在客户端下载的文件时,出现错误提示“缺少文件名头”,不能运行该文件。

我使用下面的代码将文件发送给客户端。

@RequestMapping(value = "/getExecutableFile", method = RequestMethod.GET)
    public void executeAssetCoreAction(HttpServletRequest request, HttpServletResponse response) throws IOException
{
 InputStream in = getTheFileStream();

 response.setContentType("application/octet-stream; charset=UTF-8");
 response.setHeader("Content-Disposition","attachment; filename=\"" + "console.exe" + "\"");
 response.setDateHeader("Last-Modified", DateTime.now().getMillis());
 IOUtils.write(IOUtils.toByteArray(in), response.getOutputStream());
 in.close();
}
  • 其中IOUtils是Apache的百科全书LIB
java spring file servlets inputstream
2个回答
0
投票

尝试改变:

response.setHeader("Content-Disposition","attachment; filename=\"" + "console.exe" + "\"");

至:

response.setHeader("Content-Disposition","attachment; filename=\" + "console.exe" + "\");

它看起来像你可能一直在问的(+“console.exe” +“\”)的文件名,而不是(“console.exe”)


0
投票

您的客户端行为的描述会受到欢迎

客户端代码和必要的检查你的头。

该文件的发送端我不会做这样的说法,即使这样,即使它看起来确定。

OutputStream out = response.getOutputStream();

out.write(Files.readAllBytes(Paths.getPath("your path")));

Java.nio.file

检查IOException异常而阅读

© www.soinside.com 2019 - 2024. All rights reserved.