Появляется ошибка «Отсутствует заголовок имени файла», когда я открываю файл не из Spring контроллера - PullRequest
0 голосов
/ 11 февраля 2019

У нас есть веб-приложение на Java, в котором есть функция для загрузки исполняемого файла (.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 Commons Lib

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Описание вашего поведения клиента будет приветствоваться

кодом клиента и необходимым для проверки вашего заголовка.

на стороне отправки файла Я бы так не поступил, дажеесли это так, даже если это выглядит нормально.

OutputStream out = response.getOutputStream();

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

Java.nio.file

Проверка IOException во время чтения

0 голосов
/ 11 февраля 2019

Попробуйте изменить:

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

на:

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

Похоже, вы, возможно, спрашивали имя файла (+ "console.exe" + "\") вместо этогоиз ("console.exe")

...