我先说下背景,我们这边有个平台组,文件服务就是平台组的服务。文件服务包括文件上传下载功能,服务的文件是保存在mongodb中。(注:平台组的代码很难改动,我只有自己想办法解决问题!)
实现图片预览的思路是这样的:
- Feign调用文件服务的,获取feign.Response 对象。
- 将获取Feign.Response对象的输出流,封装一层,返回给前台。
- 前台通过接收到二进制文件通过Blob转化,就可直接预览图片。
具体的个步骤的关键代码如下:
1. 文件服务文件下载接口,代码如下:
@RequestMapping(value = "/downloadFile")
public void downloadFile(@RequestParam(name = "file_id") String fileId, HttpServletRequest request, HttpServletResponse response) throws Exception {
Query query = Query.query(Criteria.where("_id").is(fileId));
// 查询单个文件
GridFSDBFile gfsfile = gridFsTemplate.findOne(query);
if (gfsfile == null) {
return;
}
String fileName = gfsfile.getFilename()