Spring MVC下载文件

一、方法一

1.1 Java代码

@RequestMapping(value="/downloadFile")
public String downloads(HttpServletResponse response) throws Exception{
    String	path = "D:\\tmp/";
    String  fileName = "fillp_server.txt";
    //1、设置response 响应头
    response.reset();
    response.setCharacterEncoding("UTF-8");
    response.setContentType("multipart/form-data");
    response.setHeader("Content-Disposition",
            "attachment;fileName="+ URLEncoder.encode(fileName, "UTF-8"));

    File file = new File(path,fileName);
    //2、 读取文件--输入流
    InputStream input=new FileInputStream(file);
    //3、 写出文件--输出流
    OutputStream out = response.getOutputStream();
    byte[] buff =new byte[1024];
    int index=0;
    //4、执行 写出操作
    while((index= input.read(buff))!= -1){
        out.write(buff, 0, index);
        out.flush();
    }
    out.close();
    input.close();
    return null;
}

1.2 前端代码

<a href="/downloadFile">click download</a>
二、方法二:使用spirng 自带的 ResponseEntity 实现

2.1 Java代码

@RequestMapping(value="/downloadEntity")
@SuppressWarnings("resource")
public ResponseEntity<byte[]> downloadsEntity(HttpServletRequest request) throws Exception{
    String	path = "C:/";
    String  fileName = "default.png";
    File file=new File(path,fileName);
    if(!file.isFile()){
        return null;
    }
    
    InputStream input=new FileInputStream(file);
    byte[] buff=new byte[input.available()]; // 获取文件大小
    input.read(buff) ;
    HttpHeaders headers=new HttpHeaders();
    headers.add("Content-Disposition", "attachment;filename="+fileName);
    HttpStatus status=HttpStatus.OK;
    ResponseEntity<byte[]> entity=new ResponseEntity<>(buff,headers,status);
    return  entity;
}

2.2 前端代码

<a href="/downloadEntity">click download</a>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香水墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值