Я делаю функцию для создания простого Excel, отправляя список, я делаю всю работу обратно, но когда я пытаюсь прочитать ответ (xhr), он говорит мне, что он пуст и это больше тип контента Я отправляю его в Excel на заднюю панель, сзади я устанавливаю его снова и на передней панели с приложением ajax, которое я читаю / html. Может ли оно быть предварительно сконфигурировано из какого-либо js файла?
$.ajax({
data: JSON.stringify(delAdjust),
contentType: "application/vnd.ms-excel",
sendMethod: "POST",
target: "exportar_registros",
success: function(data, status, xhr) {
if (data != null && data != "FAIL") {
var b64Data = data;
debugger;
var contentType = xhr.getResponseHeader("Content-Type"); //Obtenemos el tipo de los datos
var filename = xhr.getResponseHeader("Content-Disposition"); //Obtenemos el nombre del fichero a desgargar
filename = filename.substring(filename.lastIndexOf("=") + 1) || "download";
...
}
});
Я пытаюсь собрать данные с помощью xhr, но получаю значение null
@RequestMapping(value = "exportarRegistros", method = RequestMethod.POST)
@ResponseBody
@Mantenimiento
public void exportarRegistros(@RequestBody final RegistroDto registro,HttpServletRequest request, HttpServletResponse response)
throws AccessDeniedException, IOException, AjusteException {
List<AjusteDto> listadoAjustesFinal = this.ajusteGenerateExcel.listadoAjustes(registro);
HSSFWorkbook resultado = this.ajusteGenerateExcel.exportAdjust(listadoAjustesFinal);
File file = File.createTempFile("ajustes-", ".xls");
FileOutputStream report = new FileOutputStream( file.getPath() );
response.setContentType("application/vnd.ms-excel;base64");
response.setHeader("Content-disposition", "attachment; filename=" + file.getName());
resultado.write(report);
resultado.close();
report.close();
FileInputStream in = new FileInputStream(file);
byte[] bytes = new byte[(int)file.length()];
in.read(bytes);
String encodedBase64 = new String(Base64.encodeBase64(bytes));
response.getOutputStream().write(encodedBase64.getBytes());
in.close();
}