Не можете загрузить файл Excel с одного сервера на другой? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть серверная часть на Java Spring, которая использует Apache POI, создающую рабочую книгу

     @Override
public byte[] getRegistryEKassirFormat(ExcelWriterFormat excelWriter, Application application) throws E_RegistryInternalFailureException, ExecutionException, InterruptedException, IOException {
    Workbook workbook = writeDownToExcelFile(excelWriter, application);

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
        workbook.write(bos);
    } catch (IOException e) {
    } finally {
        try {
            bos.close();
            workbook.close();
        } catch (IOException e) {
        }
    }
    return bos.toByteArray();
}

После отправки клиенту в качестве ответа

  @PostMapping(value = "/registry/download")
@ResponseBody ResponseEntity<byte[]> getExcelFileByFormat(
        @RequestBody  Application application,
        @RequestParam ExcelWriterFormat excelWriterFormat,
        OutputStream outputStream
        ) throws WriteException, ExecutionException, E_RegistryInternalFailureException, InterruptedException, IOException {

    byte[] bytes = registryService.getRegistryEKassirFormat(excelWriterFormat, application);

    return ResponseEntity.ok()
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=Registry-" + excelWriterFormat.toString() + "-ofApp" + application.getId()+ ".xls")
            .contentType(MediaType.valueOf("application/vnd.ms-excel"))
            .contentLength(bytes.length)
            .body(bytes);
}

На стороне клиента для получения данных используется блоби преобразовать его, создаст объект href, и он загрузит

        response.blob({type: 'application/vnd.ms-excel'}).then(blob => {

          let url = window.URL.createObjectURL(blob, {type: 'application/vnd.ms-excel'});

          let a = document.createElement('a');
          a.href = url;
          a.download = filename;
          document.body.appendChild(a);
          a.click();
          document.body.removeChild(a);
        }).catch(error => {
              console.log(error)
              message.error(ERROR);
           //   }
          });
   } catch (error) {
    console.log(error)
     message.error(ERROR);
   }

Все отлично работает и загрузка файлов с тем форматом, который нам нужен. Но когда другая клиентская сторона использует этот загружаемый файл, она отправляет собственной службе в виде формы / данных и выдает ошибку

Добавить платеж (ы) из файла Не удалось проанализировать данные платежа из файла 'C: \ inetpub \ importer \ Content \ Uploads \ testsheet% 20 (3) _2aba9c69-e798-402c-b20f-62f63d98de89.xls' (EX: ссылка на объект не установлена ​​на экземпляр объекта.) 2019-10-2110: 40: 03.4657 |Ошибка |Importer.Site.Filters.ImporterExceptionFilter |184 |System.Exception: не удалось проанализировать данные платежа из файла 'C: \ inetpub \ importer \ Content \ Uploads \ testsheet% 20 (3) _2aba9c69-e798-402c-b20f-62f63d98de89.xls' в Kcell.Importer.CoreImporter.GetPaymentFromExcelFile (Строковое имя файла) в Kcell.Importer.CoreImporter.AddPaymentFromFile (String fileName, Int32 docId, String userId) в Importer.Domain.Repository.Impl.DocumentRepository.AddPaymentsFromFile (Int32 docId, String fileName, String ProjectSpace \ in_D_D_Id: в DI: String userSace: in_D_D_Id: в DI: String userSace: in_D_D_Id: в DID: String\ Support \ Clients \ Kcell \ Importer.Web \ Importer.Domain \ Repository \ Impl \ DocumentRepository.cs: строка 111 в Importer.Site.Controllers.api.DocumentsController.d__13.MoveNext () в D: \ Workspace_VS \ Projects \ Support\ Clients \ Kcell \ Importer.Web \ Importer.Site \ Controllers \ api \ DocumentsController.cs: строка 88 - Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение - в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () .. .

Второй клиент не наш сервис, и я не могу посмотреть и изменить его кодвыше своего журнала. Как я знаю, этот сервис написан на .NET

Я не знаю, почему это происходит, пытался работать с форматом файла Excel, все показывает эту ошибку

Буду рад любой попытке попробовать

...