Файл экспортируется, но когда я открываю, я получаю ошибку поврежденного файла.
Во внешнем интерфейсе мы используем Angular2 и NodeJS, бэкэнд мы используем java 8.
Ниже приведен мой код.
NodeJS код
var params = queryData;
var addHeaders = {
'Accept' : 'application/vnd.ms-excel',
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'responseType': 'arraybuffer'
};
logger.trace(path);
logger.trace('params: ' + JSON.stringify(params));
calcProxy.executeGetAPI(path, params, addHeaders, function (data, resHeaders, err) {
if (err) {
logger.error('Error during executeGet for SR Details');
}
callback(data,resHeaders, err);
});
Angular сервисный код
var data = (response && response.data && response.data) ? response.data : null;
if (null !== data && (response.status === 200 || response.status === 201)) {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = 'test.xlsx';
a.click();
window.URL.revokeObjectURL(url);
Бэкэнд-конец java код
byte[] byteArray = testService.getFileInBytes( srId, errorCodes, status, srOpenedDate, srClosedDate, falloutStartDate, falloutEndDate );
response.setContentType( "application/vnd.ms-excel" );
response.setContentLength( srSearchByteArray.length );
response.setHeader( HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + FILE_NAME + ".xlsx" );
OutputStream outStream;
outStream = response.getOutputStream();
outStream.write( byteArray );
outStream.flush();
Пожалуйста, помогите мне. мы также отправляем заголовок respnseType как arrayBuffer. Я перепробовал все подходы и получаю ту же ошибку.