根据路径--下载文件

@RequestMapping(method = RequestMethod.GET, value = "/download")
@Accessable(name = "附件信息", function = "user", requireRole = false, requireLogin = false)
@ApiOperation(value = "保存附件信息")
@CrossOrigin
void projectDownload(Long id, HttpServletRequest request, HttpServletResponse response) {
    JsonResult result = this.service.projectDownload(id);
    //绝对路径
    String filePath = (String) result.get("absolutePath");

    File downloadFile = new File(filePath);
    ServletContext context = request.getServletContext();
    // get MIME type of the file
    String mimeType = context.getMimeType(filePath);
    if (mimeType == null) {
        mimeType = "application/octet-stream";
        log.info("context getMimeType is null");
    }
    log.info("MIME type: " + mimeType);
    // set content attributes for the response
    response.setContentType(mimeType);
    response.setContentLength((int) downloadFile.length());
    // set headers for the response
    String headerKey = "Content-Disposition";
    String headerValue = String.format("attachment; filename=\"%s\"",
            downloadFile.getName());
    response.setHeader(headerKey, headerValue);

    // Copy the stream to the response's output stream.
    try {
        InputStream myStream = new FileInputStream(filePath);
        IOUtils.copy(myStream, response.getOutputStream());
        response.flushBuffer();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值