流式下载资源

1. 应用场景

  通常用在以文件的形式下载大量数据。

2. 写法举例

@RestController
public class ExampleController
{
    @ApiOperation("下载资源文件")
    @ApiImplicitParams({
        @ApiImplicitParam(name="id" , value="资源标识" , dataTypeClass=String.class , required = true) ,
        @ApiImplicitParam(name="fileName" , value="下载下来的文件的文件名" , dataTypeClass=String.class , required = true)
    })
    @GetMapping(value="/resource/_download" , produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
    public void downloadResource(@RequestParam("id") String aId
            , @RequestParam("fileName") String aFileName
            , HttpServletResponse aResponse) throws IOException, DocumentException
    {
        InputStream ins = xxxx ; //获取资源
        aResponse.setHeader("content-type", "application/octet-stream");
        aResponse.setContentType("application/octet-stream");
        aResponse.setHeader("Content-Disposition", "attachment;filename=" + aFileName);
        // 输出数据
        StreamAssist.transfer_1(ins , aResponse.getOutputStream());
    }
}

3. 扩展

  如果被下载的资源满足以下条件,则可以先将数据写到Temp File,然后返回TempFile。

  1. 存在短时间内被重复获取的可能性;
  2. 且资源在这段时间内几乎不变;
  3. 资源的查询组织会消耗比较多的资源。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,655评论 8 265
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • 所谓,君子性非异也,善假于物也!~ 那么,本文意在给大家提供快速、全面、高效的面试解决方案; 为大家节约寻找面试、...
    骑小猪看流星阅读 4,115评论 13 100
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 把网上的一些结合自己面试时遇到的面试题总结了一下,以后有新的还会再加进来。 1. OC 的理解与特性 OC 作为一...
    AlaricMurray阅读 2,616评论 0 20