文件的上传
public static String up(File upfile, String uploadContentType,
String uploadFileName) {// 1:将上传的文件统一放置到upload的文件夹下
String realPath = ServletActionContext.getServletContext().getRealPath("/upload");
// 2:将每天上传的文件,使用日期格式的文件夹分开,将每个业务的模块放置统一文件夹下:项目名称/upload/2017/9/22/文件
String datePath=new SimpleDateFormat("/yyyy/MM/dd").format(new Date());
// 3:上传的文件名要指定唯一,可以使用UUID的方式,也可以使用日期作为文件名
String UUIDName = UUID.randomUUID()+"";
//截取文件后缀
String type = uploadFileName.substring(uploadFileName.indexOf("."));//test.txt
String finalpath=realPath+datePath+"/"+UUIDName+type;
//判断上传文件夹是否存在
File file=new File(realPath+datePath);
if(!file.exists()){
file.mkdirs();
}
File aimFile=new File(finalpath);
// 4:封装一个文件上传的方法,该方法可以支持多文件的上传,即支持各种格式文件的上传
upfile.renameTo(aimFile);
// 5:保存路径path的时候,使用相对路径进行保存,这样便于项目的可移植性
String path="/upload"+datePath+"/"+UUIDName+type;
return path;
}
@Transactional(readOnly=false)
@Override
public void save(ElecUser elecUser) {
File[] upload = elecUser.getUpload();//用户附件
String[] uploadContentType = elecUser.getUploadContentType();//用户类型
String[] uploadFileName = elecUser.getUploadFileName();//用户名称
if(upload!=null&&upload.length>0){
for (int i = 0; i < uploadFileName.length; i++) {
//创建附件对象
ElecUserFile elecUserFile=new ElecUserFile();
elecUserFile.setFileName(uploadFileName[i]);
//在此进行文件上传,返回文件上传后的相对路径
String fileURL=UpUtil.up(upload[i],uploadContentType[i],uploadFileName[i]);
elecUserFile.setFileURL(fileURL);
elecUserFile.setProgressTime(new Date());
elecUserFile.setElecUser(elecUser);
elecUserFileDao.save(elecUserFile);
}
}
文件的下载功能
//下载用户附件
public String download() throws IOException{
String fileID=request.getParameter("fileID");
//根据id获取用户附件信息
ElecUserFile userFile=elecUserService.getFileByID(fileID);
//获取附件路径和名称,进行下载
String fileURL=userFile.getFileURL();
String fileName=userFile.getFileName();
fileName=new String(fileName.getBytes("gbk"),"iso8859-1");
//获取文件下载的全路径
String finalurl=ServletActionContext.getServletContext().getRealPath("")+fileURL;
//两个下载头部信息
response.setHeader("Content-disposition", "attachment;filename="+fileName);
//获取输入流和输出流
File file=new File(finalurl);
FileInputStream in=new FileInputStream(file);
ServletOutputStream out=response.getOutputStream();
int b;
while((b=in.read())!=-1){
out.write(b);
}
return null;