Каков наилучший подход для загрузки контента с использованием API REST, содержащего большие данные (100 МБ) - Java - PullRequest
0 голосов
/ 26 марта 2020

Я использовал Mapr Apis для чтения содержимого из файла журнала в объект Stream.

// Код для чтения файла журнала ........ // Затем получил содержимое в объект Stream, как показано ниже.

FSDataInputStream stream = FileSystem.get (URI.create (uri), conf);

// Теперь я сделал этот контент доступным для загрузки в пользовательском интерфейсе.

// Я могу преобразовать это в byte [], а затем в String как

byte [] bs = новый байт [stream.available ()];

String content = new String (bs );

Мое требование - создать Rest Api для загрузки этого контента. Каков наилучший подход для загрузки этого контента?

Заранее спасибо

1 Ответ

0 голосов
/ 03 апреля 2020
@RequestMapping(value = "api/download/{id}",
    method = RequestMethod.GET,
    produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)  
 public ResponseEntity<?> downloadReportFile(@PathVariable Long id) {
    log.debug("To download log file from remote server.");

    try {
        Long idparam = id;
       // -----------------------
       // Code to get FSDataInputStream
       // -----------------------  
       FSDataInputStream stream =FileSystem.get(URI.create(uri),conf);
       byte[] byteArray = new byte[stream.avilable()];
       stream.read(byteArray)
        return new  ResponseEntity<>(new ByteArrayResource(byteArray), HttpStatus.OK);
    } catch (IOException e) {
        log.error("Failed to download file ", e);
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

}
...