У меня есть файлы .xlsx, .docx и .pdf, сохраненные на моем сервере. Контроллер загрузки выглядит следующим образом:Файлы, загруженные через контроллер пружины, повреждены
@RestController
public class FileDownload {
@RequestMapping(value = "/files/{file_name}/", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void getFile(
@PathVariable("file_name") String file,
HttpServletResponse response) throws Exception {
String fileType=file.split("\\.")[1];
switch(fileType){
case "xlsx": response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
break;
case "docx": response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
break;
case "pdf": response.setContentType("application/pdf");
break;
default: response.setContentType("application/octet-stream");
break;
}
response.setHeader("Content-Disposition", "attachment; filename=" + file);
response.setHeader("Content-Length", String.valueOf(file.length()));
InputStream is = FileDownload.class.getResourceAsStream("/files/" + file);
copy(is, response.getOutputStream());
response.flushBuffer();
}
}
При попытке открыть файл, первенствует говорит мне, что поврежден и нуждается в ремонте. Процесс ремонта также не работает.
Что может быть причиной этой ошибки?
Есть много подобных вопросов, но ни одно из предлагаемых решений не работает.
Единственное «исправление», которое работает, добавляет атрибут «загрузить» к ссылке в интерфейсе, который загружает файл. Но, к сожалению, это не работает для IE.