我们有一个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();
}
尝试改变:
response.setHeader("Content-Disposition","attachment; filename=\"" + "console.exe" + "\"");
至:
response.setHeader("Content-Disposition","attachment; filename=\" + "console.exe" + "\");
它看起来像你可能一直在问的(+“console.exe” +“\”)的文件名,而不是(“console.exe”)
您的客户端行为的描述会受到欢迎
客户端代码和必要的检查你的头。
该文件的发送端我不会做这样的说法,即使这样,即使它看起来确定。
OutputStream out = response.getOutputStream();
out.write(Files.readAllBytes(Paths.getPath("your path")));
Java.nio.file
检查IOException异常而阅读