SpringBoot整合Mongo实现文件上传下载

文件上传

	@ApiOperation(value = "上传文件",notes = "上传文件")
    @RequestMapping(value = "/file/upload",method = RequestMethod.POST)
    public Object upload(@RequestParam("file") MultipartFile multiportFile, HttpServletRequest request) throws Exception {
        // 获得提交的文件名
        String fileName = multiportFile.getOriginalFilename();
        // 获得文件输入流
        InputStream ins = multiportFile.getInputStream();
        // 获得文件类型
        String contentType = multiportFile.getContentType();
        // 将文件存储到mongodb中,mongodb 将会返回这个文件的具体信息
        GridFSFile objectId = gridFsTemplate.store(ins, fileName, contentType);
        return objectId;
    }

文件下载

	@ApiOperation(value = "下载文件",notes = "下载文件")
    @RequestMapping(value = "download/{fileName}",method = RequestMethod.GET)
    public String download(@PathVariable @ApiParam(value = "文件名")String fileName,
                                 HttpServletRequest request, HttpServletResponse response) throws Exception {
        Query query = Query.query(Criteria.where("filename").is(fileName));
        ModelEvaluationContextReport report = this.reportMongoTemplate.findOne(query,ModelEvaluationContextReport.class);
        if (report == null) {
            throw new Exception("文件不存在");
        }
        String fileName = report.getFileName();
        //处理中文文件名乱码
        if (request.getHeader("User-Agent").toUpperCase().contains("MSIE") ||
                request.getHeader("User-Agent").toUpperCase().contains("TRIDENT")
                || request.getHeader("User-Agent").toUpperCase().contains("EDGE")) {
            fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
        } else {
            //非IE浏览器的处理:
            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
        }
        // 通知浏览器进行文件下载
        response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
        String base64 = report.getBase64().replace("\r","").replace("\n","");
        byte[] buffer = Base64Utils.decodeFromString(base64);
        OutputStream os = response.getOutputStream();
        os.write(buffer);
        os.flush();
        os.close();
        return "success";
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值