Мы внедряем веб-приложение, и есть проблема с ссылкой на файл загрузки. Код контроллера:Как сообщить клиентам, что имя файла dows имеет при загрузке с помощью Spring Boot?
@RequestMapping(value = "/file" , method = RequestMethod.GET,
produces = "application/jar")
public ResponseEntity<FileSystemResource> getFile() {
FileSystemResource resource = new FileSystemResource(new File(PATH_TO_FILE));
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Disposition", "attachment; filename=" + FILE_NAME);
responseHeaders.add("Content-Type", "application/jar");
ResponseEntity<FileSystemResource> responseEntity = new ResponseEntity<>(resource, responseHeaders, HttpStatus.OK);
return responseEntity;
}
Проблема заключается в том, что он загружает хорошо из браузера, но не, например, от Wget.
, когда я пытаюсь сделать
wget localhost:8080/file
я загрузить его, но не как file.jar (который FILE_NAME), а просто файл без расширения.
Есть ли какие-либо решения?
UPD: Я также попытался сменить запрос на file.jar. Но по какой-то причине этот запрос не стрелял. Кроме того, я попытался сделать регулярное выражение (я не помню хорошо, что-то вроде этого)
{filename:[a-zA-Z0-9]+}{extension:\\.[a-z]+}
Но это только Cought запросы как aaa.bbb, fsdf.sdkfjsdkf (я имею в виду некоторые случайные), но не file.jar , Похоже, в Spring Boot есть специальные обработчики запросов?
Тем не менее, как решить такую проблему?
Спасибо
Не работает :( Я тоже попробовал. Проблема в том, что по какой-то причине «/download/file.jar» не обрабатывается запрошенным отображаемым значением «/ download/{fileName}» – utkillr
Самое забавное, что запрос на «file.jara» пойман, но а не «file.jar». Похоже, есть вид специального сопоставления запросов. – utkillr
Можете ли вы попробовать использовать это выражение value = "/download/{fileName:.+}" – algojava