Я написал код для печати листа Excel с помощью springboot. Я получаю ошибку сервера 500, в которой говорится, что доступ к файлу запрещен.
@RequestMapping(value = "/downloadReport", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> downloadReport(@RequestParam(value = "employeeName", required = false) String employeeName,
@RequestParam(value = "empId",required = false) Integer empId,@RequestParam(value = "skillMasters",required = false) Integer skillMasters,@RequestParam(value = "projects",required = false) List<String> projects,@RequestParam(value = "accounts",required = false) List<String> accounts, HttpServletResponse response) throws IOException, URISyntaxException, ParseException {
CourseIndividualReportRequest courseIndividualReportRequest = new CourseIndividualReportRequest();
courseIndividualReportRequest.setEmployeeName(employeeName);
courseIndividualReportRequest.setEmpId(empId);
courseIndividualReportRequest.setAccounts(accounts);
courseIndividualReportRequest.setProjects(projects);
courseIndividualReportRequest.setSkillMasters(skillMasters);
service.generateIndividualReport(courseIndividualReportRequest);
File file = new File("D:\\CandidateCheckedInReport.xls");
HttpHeaders respHeaders = new HttpHeaders();
respHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
respHeaders.setContentLength((int) file.length());
respHeaders.setContentDispositionFormData("attachment", "CandidateCheckedInReport");
InputStreamResource isr = new InputStreamResource(new FileInputStream(file));
if (file.exists()) {
}
return new ResponseEntity<InputStreamResource>(isr, respHeaders, HttpStatus.OK);
}
реализация услуги
Вы перепроверили очевидное? То есть вы правильно написали имя файла, оно находится в корне диска D: \ и процесс, запускающий ваше приложение, имеет разрешение на доступ к нему?
Пользователь, от имени которого запущена веб-служба, не имеет разрешений на чтение этого файла.




Наиболее вероятный источник проблемы:
InputStreamResource isr = new InputStreamResource(new FileInputStream(file));
где путь к file - "D: \ CandidateCheckedInReport.xls".
Наиболее вероятное объяснение состоит в том, что «пользователь», на котором запущен веб-сервер, не имеет разрешения на чтение этого файла. Веб-приложениям часто запрещен доступ к файлам за пределами дерева веб-приложения или веб-контейнера. Это мешает хакеру использовать дыры в безопасности в плохо написанном веб-приложении для чтения и записи произвольных файлов в файловой системе сервера.
Решения:
Поместите файл, который вы пытаетесь сделать доступным, в дерево файлов веб-приложения или веб-контейнера.
Измените ограничение доступа, чтобы разрешить пользователю веб-сервера доступ к файлу в его текущем расположении. Будь очень осторожен, чтобы разрешить доступ только к тем файлам / каталогам, которые нужно быть доступны через веб-приложение.
Спасибо, Стивен, за ответ. пожалуйста, дайте мне знать, как можно решить эту проблему
Пожалуйста, перечитайте мой ответ! Я не могу быть более конкретным, потому что вы предоставили минимальную информацию об используемом веб-контейнере.
исключение похоже на это java.io.FileNotFoundException: D: \ CandidateCheckedInReport.xls (доступ запрещен)