大数据平台技术笔记

流式下载资源

2022-06-15  本文已影响0人  OkGogogooo

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. 资源的查询组织会消耗比较多的资源。
上一篇 下一篇

猜你喜欢

热点阅读