Ошибка при получении файла формата или расширения файла при попытке экспортировать Excel из arrayBuffer в Angular 2 - PullRequest
0 голосов
/ 22 апреля 2020

Файл экспортируется, но когда я открываю, я получаю ошибку поврежденного файла.

Во внешнем интерфейсе мы используем 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. Я перепробовал все подходы и получаю ту же ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...