java - Jersey (网络服务): the advantages of StreamingOutput and the best way for create downloading API

标签 java rest jersey streaming download

我已使用此方法为我的 REST Web 服务创建一个 API,以便使用 jersey JAX-RS 下载文件:

public Response returnFile(String filePath,String fileName,MediaType type) throws IOException {
    File file = new File(filePath);
    String[] filePart = filePath.split("\\.");
    String fileEnd = filePart[filePart.length - 1];
    return Response.ok(file, type)
        .header("Content-Disposition","attachment; filename=\"" 
            + URLEncoder.encode(fileName + "." + fileEnd,"UTF-8") + "\"" ) 
            .build(); 
}

但有人告诉我这可能会出现性能问题并导致 OutOfMemory 异常。

所以我最近搜索创建这样的 API,我发现大多数示例都使用 StreamingOutput

那么使用StreamingOutput有什么优势呢?在我的方法中使用它而不是 File 更好吗?如果有人说出创建此类 API(用于下载文件的 API)的最佳方法,我将非常感激。

最佳答案

是的,它的内存效率更高。阅读本文了解更多信息:https://dzone.com/articles/jax-rs-streaming-response

关于java - Jersey (网络服务): the advantages of StreamingOutput and the best way for create downloading API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45075920/

相关文章:

java - 使用 shiro 1.2.1 对数据库进行身份验证

java - 如何显示 Jersey Web 应用程序的基本 URL 中的内容?

javascript - 如何通过 jQuery POST 请求发送原始字符串?

Laravel API : extremely long timeouts for external API

java - 我缺少什么来运行 jersey 2 网络服务?

java - 如何安全地代理来自任何 url 的图像并避免漏洞利用?

java - 我应该如何用 Java 编写自己的自定义注释

java - 处理操作栏向上按钮的正确方法?

java - 将颜色更改为 JPanel 并返回到原始状态

java - Jersey:将数据保存在内存中