import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/util")
public class DownLoadController {
//定义日志对象
private Logger logger = Logger.getLogger(DownLoadController.class);
@RequestMapping("/downFile")
public void downFile(HttpServletRequest request, HttpServletResponse response, String fileName) throws IOException {
// 根据文件名称|文件路径获取 上下文的路径地址
String realPath = request.getServletContext().getRealPath(fileName);
// 创建文件
File file = new File(realPath);
// 获取文件的长度
long fileLength = file.length();
// 获取文件名称
String name = file.getName();
logger.info("文件下载的名称@@@@@@@"+name);
// 设置响应类型
response.setHeader("Content-Type", "application/octet-stream");
// 设置下载的类型的长度
response.setHeader("Content-Length", String.valueOf(fileLength));
// 设置以下载方式使用
response.setHeader("Content-Disposition",
"attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(name, "UTF-8"));
// 获取下载流对象
ServletOutputStream os = response.getOutputStream();
// 缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(os);
// 下载文件的缓冲输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
// 定义的缓冲区
byte buffer[] = new byte[1024];
// 定义读取的长度
int len = 0;
// 循环读取
while ((len = bis.read(buffer)) != -1) {
// 写入到响应的流中
bos.write(buffer, 0, len);
}
// 关闭流
bis.close();
bos.close();
os.close();
}
}
前台只需要用标签进行连接,就可以快速的将文件和图片进行下载