springMVC固定文件名下载

来源:互联网 发布:g92内螺纹编程实例 编辑:程序博客网 时间:2024/05/16 14:03

jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>单个文件下载</title></head><body><h1>单个文件下载</h1><a href="download.html?fileName=img1-lg.jpg">img1-lg.jpg</a></body></html>
Controller层

package lesson5.com.jkxy.springmvc.controller;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;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.RequestParam;@Controllerpublic class DownloadController {//@RequestParam String fileName,@RequestMapping("/download")public String download(HttpServletRequest request,HttpServletResponse response){response.setContentType("text/html;charset=utf-8");try {request.setCharacterEncoding("UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}String fileName = request.getParameter("fileName");//设置输入流和输出流BufferedInputStream bis = null;BufferedOutputStream bos = null;//获得上传文件的路径String ctxPath = request.getSession().getServletContext().getRealPath("/")+"upload/";String downloadPath = ctxPath + fileName;System.out.println(downloadPath);try {//获取文件的长度long fileLength = new File(downloadPath).length();//设置头信息response.setContentType("application/x-msdownload");response.setHeader("Content-Length", String.valueOf(fileLength));response.setHeader("Content-disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"ISO8859-1"));bis = new BufferedInputStream(new FileInputStream(downloadPath));bos = new BufferedOutputStream(response.getOutputStream());byte[] buff = new byte[4096];int bytesRead;while((bytesRead = bis.read(buff, 0, buff.length)) !=-1){bos.write(buff,0,bytesRead);}} catch (Exception e) {}finally{if(bis != null){try {bis.close();} catch (IOException e) {e.printStackTrace();}}if(bos != null){try {bos.close();} catch (IOException e) {e.printStackTrace();}}}return null;}}



原创粉丝点击