SpringMVC—文件下载

本文详细介绍了如何使用Spring框架实现jsp页面上的文件下载功能,包括Action类的编写、文件路径获取、输入输出流操作及编码转换等关键步骤。
文件下载


jsp页面:
 <a href="fileDownload.do">下载</a>


Action类:
package com.cjh.action;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
public class FileDownloadAction {


@RequestMapping(value="/fileDownload" , method=RequestMethod.GET)
public void fileDownload(HttpServletRequest request , HttpServletResponse response ){
   try{
 
/** 文件存放的相对目录**/
String path = "/fileupload";
 
/**文件名,可以从数据库中取**/
           String fileName = "bobing.war";
    
            /**获得输入流**/
InputStream in= new BufferedInputStream(request.getSession().getServletContext().getResourceAsStream(path+File.separator+fileName));
         
/**存放文件的字节数组,available()返回字节数**/
byte[] buffer = new byte[in.available()];
 
/**从流中将文件读取到字节数组中**/
                        in.read(buffer);
         
                         /**关闭流**/
                         in.close();
         
                         /**转换编码**/
fileName = URLEncoder.encode(fileName, "UTF-8");
         
/**重置response**/
response.reset(); 
 
/**设置HTML头部信息**/
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.addHeader("Content-Length", "" + buffer.length);  
response.setContentType("application/octet-stream;charset=UTF-8");  
 
/**获得输出流**/
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
 
/**从字节数组中将文件写到输出流中**/
outputStream.write(buffer); 
 
/**清空输出流**/
outputStream.flush(); 
 
/***关闭输入流*/
outputStream.close();
 
}catch(Exception e){
               e.printStackTrace();
}
 
}



}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

河马开源

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

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

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

打赏作者

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

抵扣说明:

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

余额充值