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

被折叠的 条评论
为什么被折叠?



