Я работаю с Spring-3.9.3, создаю файлы Excel и пытаюсь загрузить их из React.Код прекрасно работает с небольшими размерами файлов (50 КБ), более того, это означает отсутствие ответа от React localhost web.
Я не знаю, как решить проблему, так как понятия не имею, происходит ли ошибка из библиотеки Spring или React.
Код взят из учебника, который вы можете найти здесь: https://rieckpil.de/howto-up-and-download-files-with-react-and-spring-boot/
//react code from react
class App extends Component {
downloadExcel = () => {
fetch('http://localhost:8080/api/files')
.then(response => {
const filename = response.headers.get('Content-Disposition').split('filename=')[1];
response.blob().then(blob => {
let url = window.URL.createObjectURL(blob);
let a = document.createElement('a');
a.href = url;
a.download = filename;
a.click();
});
});
}
render() {
return (
<div className="App-intro">
<h3>Download an excel file</h3>
<button onClick={this.downloadExcel}>Download</button>
</div>
)
}
}
И здесь есть код Spring, который я использую:
//spring
@RestController
@RequestMapping(method = RequestMethod.GET, value = "/api/files")
@CrossOrigin(value = {"*"}, exposedHeaders = {"Content-Disposition"})
public class FileBoundary{
@GetMapping
public void getEntitiesXLS(HttpServletRequest request, HttpServletResponse response) throws Exception, IOException, InvalidFormatException{
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Contacts");
//create the excel file with Apache POI library
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=\"tickets.xlsx\"");
workbook.write(response.getOutputStream());
}
}
Я вижу запрос в консоли Spring, но в сети React ответа нет.Кто-нибудь знает решение для этого?Спасибо!