使用包含大数据的 REST API 下载内容的最佳方法是什么 (100 MB) - Java

What is the best approach to download content using REST api's containing large data(100 MB) - Java

提问人:maniprav 提问时间:3/26/2020 更新时间:4/4/2020 访问量:242

问:

我使用 Mapr Apis 将日志文件中的内容读取到 Stream 对象中。

用于读取日志文件........的代码 然后将内容放入 Stream 对象中,如下所示。

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

现在,我已经在UI中提供了此内容以供下载。

我可以将其转换为 byte[],然后转换为 String as

字节[] bs = 新字节[stream.available()];

字符串内容 = new String(bs);

我的要求是创建一个 Rest API 来下载此内容。下载此内容的最佳方法是什么?

提前致谢

Java REST 下载 IOSTREAM

评论

0赞 wolfsgang 4/4/2020
请添加相关代码以配合您的问题,您在这里尝试了什么。

答:

-1赞 maniprav 4/4/2020 #1
@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);
    }

}