博客
关于我
利用spring 实现文件上传、下载
阅读量:506 次
发布时间:2019-03-07

本文共 3581 字,大约阅读时间需要 11 分钟。

org.springframework.util.FileCopyUtils类的copy方法可以实现文件拷贝,同时设置输出流为HttpServletResponse,则可以实现文件下载

文件上传必须使用form的同步或异步表单提交,且设置form属性enctype="multipart/form-data"

类中filekey为文件框ID(即下文的fileField

)

前端示例:

导入EXCEL文件

public class FileStreamService {	public class UploadFileName{		public String allPathName;		public String name ;	}	/**	 * 上传文件	 * 	 * @param request 请求	 * @param fileKey 请求文件所使用的KEY	 * @param DesFileName 目标路径文件名 	 * @return String     全路径文件名 	 * 	 * history	 *	 */	public String fileUpLoad(HttpServletRequest request , String fileKey , String DesFileName){		// 转型为MultipartHttpRequest:		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;		// 获得文件:		CommonsMultipartFile cfile = (CommonsMultipartFile) multipartRequest.getFile(fileKey);		File fo = null;		try {			fo = new File(DesFileName );			cfile.getFileItem().write(fo);		} catch (Exception e) {			throw new SystemException(e.getMessage());		}		return DesFileName;	}		/**	 * 上传文件	 * 	 * @param request	 * @param fileKey	 * @param desFilePath	 * @param DesFileName	 * @return String	 */	public UploadFileName fileUpLoad(HttpServletRequest request, String fileKey, String desFilePath, String DesFileName ){				UploadFileName r = new UploadFileName();				MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;		CommonsMultipartFile cfile = (CommonsMultipartFile) multipartRequest.getFile(fileKey);		File dir = new File(desFilePath+File.separator);		if (!dir.exists()){			dir.mkdirs();		}		String fileName = cfile.getOriginalFilename();		String fix = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();		fileName = desFilePath+File.separator+DesFileName+fix;		r.allPathName = fileName;		r.name = DesFileName+fix;		File fo = null;		try{			fo = new File(fileName);			cfile.getFileItem().write(fo);		}catch(Exception e){			throw new SystemException(e.getMessage());		}		return r;	}		/**	 * 文件下载	 * 	 * @param response	 * @param filePath 服务器文件路径	 * @param fileName 服务器文件名	 * @param saveFileName 目标文件名	 * @throws IOException	 */	public void fileDownLoad(HttpServletResponse response , String filePath , String fileName , String saveFileName) throws IOException{		InputStream fis = null;		try{			File file = new File(filePath + fileName);			if(!file.exists()){				throw new SystemException("文件不存在");			}			fis = new BufferedInputStream(new FileInputStream(filePath+fileName));			String f = saveFileName.equals("") ? fileName : saveFileName;			response.setContentType("application/x-msdownload;");			response.setHeader("Content-disposition", "attachment; filename="+ new String(f.getBytes("GB2312"), "ISO-8859-1"));			response.setContentType("application/" + fileName.substring(fileName.lastIndexOf(".") + 1));			FileCopyUtils.copy(fis, response.getOutputStream());		}finally{			if(fis != null){				try{					fis.close();				}catch(Exception e){					e.printStackTrace();				}			}		}	}	/**	 * 文件下载	 * @param response 	 * @param fileName 文件URL地址	 * @throws IOException	 */	public void fileDownLoad(HttpServletResponse response ,String fileName) throws IOException	{		String fileAll = FilePatch.getProjectPatch()+File.separator+fileName;		fileAll = fileAll.replace("/", File.separator);		String filepath=fileAll.substring( 0 , fileAll.lastIndexOf(File.separator)+1);		String name=fileAll.substring(fileAll.lastIndexOf(File.separator)+1);		fileDownLoad(response , filepath , name , name);	}	/**	 * 删除文件	 * 	 * @param fileName void	 */	public void fileDel(String fileName){		File file = new File(fileName);		if (file.exists()){			file.delete();		}	}}

转载地址:http://hyrjz.baihongyu.com/

你可能感兴趣的文章
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
查看>>
mysql加强(5)~DML 增删改操作和 DQL 查询操作
查看>>
mysql加强(6)~子查询简单介绍、子查询分类
查看>>
mysql加强(7)~事务、事务并发、解决事务并发的方法
查看>>
MySQL千万级多表关联SQL语句调优
查看>>
mysql千万级大数据SQL查询优化
查看>>
MySQL千万级大表优化策略
查看>>
MySQL单实例或多实例启动脚本
查看>>
MySQL压缩包方式安装,傻瓜式教学
查看>>
MySQL原理、设计与应用全面解析
查看>>
MySQL原理简介—1.SQL的执行流程
查看>>
MySQL原理简介—10.SQL语句和执行计划
查看>>
MySQL原理简介—11.优化案例介绍
查看>>
MySQL原理简介—12.MySQL主从同步
查看>>
MySQL原理简介—2.InnoDB架构原理和执行流程
查看>>
MySQL原理简介—3.生产环境的部署压测
查看>>
MySQL原理简介—6.简单的生产优化案例
查看>>
MySQL原理简介—7.redo日志的底层原理
查看>>
MySQL原理简介—8.MySQL并发事务处理
查看>>
MySQL原理简介—9.MySQL索引原理
查看>>