Java 上传文件过程及清空相关缓存目录
//提交注册3 && 上传相关图片
public ActionForward reg_enterprise_3(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
UserInfo userinfo = (UserInfo)request.getSession().getAttribute("willRegUser");
int uid = this.getUserInfoService().insert(userinfo);
String mark = StringUtils.getParameter(request, "mark", "");
if("jump_jiucool".equalsIgnoreCase(mark)){
ActionForward gotourl = new ActionForward();
gotourl.setPath("/reg_enterprise4.jsp);
gotourl.setRedirect(true);
return gotourl;
}
CookieUtils.setCookie(request, response, "umobile_jiucool", userinfo.getMsisdn(),60*60*24*30);
CookieUtils.setCookie(request, response, "uemail_jiucool", userinfo.getEmail(),60*60*24*30);
CookieUtils.setCookie(request, response, "uid_jiucool", String.valueOf(userinfo.getId()),60*60*24*30);
request.getSession().setAttribute(Constants.USER_SESSION, new SessionUser(userinfo.getId()));
String tempFilePath = Constants.PIC_UPLOAD_PATH + "enterprisePic/temp" + "/";
try {
File file = new File(tempFilePath);
if(!file.exists()){
file.mkdirs();
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4*1024);
factory.setRepository(new File(tempFilePath));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(4*1024*1024);
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
Integer type=0;
while(iter.hasNext()){
FileItem item = (FileItem)iter.next();
String filename = item.getFieldName();
if(filename.equalsIgnoreCase("uploadface")){
type=1;
}else if(filename.equalsIgnoreCase("uploadidcard")){
type=2;
}
if(!item.isFormField()){
this.processUploadedFile(item, userinfo, type);
}
}
Boolean flag = true;
File dirFile = new File(tempFilePath); ? ? ? ? ??
?File[] files = dirFile.listFiles(); ? ??
? ? ? ?for(int i=0;i<files.length;i++){ ? ??
? ? ? ? ? ? //删除子文件 ? ??
? ? ? ? ? ? if(files[i].isFile()){ ? ??
? ? ? ? ? ? ? ? flag = deleteFile(files[i].getAbsolutePath()); ? ??
? ? ? ? ? ? ? ? if(!flag){ ? ??
? ? ? ? ? ? ? ? ? ? break; ? ??
? ? ? ? ? ? ? ? } ? ??
? ? ? ? ? ? } ? ??
? ? ? ? ? ? //删除子目录 ? ??
? ? ? ? ? ? else{ ? ??
? ? ? ? ? ? ? ? flag = deleteDirectory(files[i].getAbsolutePath()); ? ??
? ? ? ? ? ? ? ? if(!flag){ ? ??
? ? ? ? ? ? ? ? ? ? break; ? ??
? ? ? ? ? ? ? ? } ? ??
? ? ? ? ? ? } ? ??
? ? ? ? } ? ??
}catch(Exception e){
throw new ServletException(e);
}
ActionForward gotourl = new ActionForward();
gotourl.setPath("/reg_enterprise4.jsp?uid=" + userinfo.getId());
gotourl.setRedirect(true);
return gotourl;
}
private void processUploadedFile(FileItem item,UserInfo userinfo,Integer type) throws Exception{
String filename = item.getName();
int index=filename.lastIndexOf("\");
filename = filename.substring(index+1, filename.length());
long fileSize = item.getSize();
if(filename.equals("") && fileSize ==0)return;
String suffixName = ?item.getName().substring(
item.getName().lastIndexOf("."));
if(".png".equalsIgnoreCase(suffixName) || ".jpg".equalsIgnoreCase(suffixName)
|| ".gif".equalsIgnoreCase(suffixName) || ".jpeg".equalsIgnoreCase(suffixName)){
// 数据库存入路径
filename = System.currentTimeMillis() + suffixName;
?
String adFileName ="";
if(type==1){
adFileName = StringUtils.replaceChar(userinfo.getId()*11,"-") + "/" + DateUtils.format("yyyMMdd", new Date()) + "/";
FileUtils.saveFileStream(item.getInputStream(),Constants.FACE_UPLOAD_PATH , adFileName + filename);
userinfo.setFace("/" + adFileName + filename);
this.getUserInfoService().update(userinfo);
}else if(type==2){
adFileName = "enterprisePic/" + "idcard" + "/" + DateUtils.format("yyyMMdd", new Date()) + "/";
userinfo.setComidcard(adFileName + filename);
}else if(type==3){
adFileName = "enterprisePic/" + "comlicense" + "/" + DateUtils.format("yyyMMdd", new Date()) + "/";
userinfo.setComlicense(adFileName + filename);
}
if(type>1){
this.getUserInfoService().update(userinfo);
FileUtils.saveFileStream(item.getInputStream(),Constants.PIC_UPLOAD_PATH,adFileName + filename);
}
}
}
? /** ??
? ?* 删除单个文件 ??
? ?* @param ? fileName ? ?被删除文件的文件名 ??
? ?* @return 单个文件删除成功返回true,否则返回false ??
? ?*/ ? ?
? public static boolean deleteFile(String fileName){ ? ??
? ? ? File file = new File(fileName); ? ??
? ? ? if(file.isFile() && file.exists()){ ? ??
? ? ? ? ? file.delete(); ? ??
? ? ? return true; ? ??
? }else{ ? ??
? ? ? ? ? return false; ? ??
? ? ? } ? ??
? } ? ??
?
? /** ??
? ?* 删除目录(文件夹)以及目录下的文件 ??
? ?* @param ? dir 被删除目录的文件路径 ??
? ?* @return ?目录删除成功返回true,否则返回false ??
? ?*/ ? ?
? public static boolean deleteDirectory(String dir){ ? ??
? ? ? //如果dir不以文件分隔符结尾,自动添加文件分隔符 ? ??
? if(!dir.endsWith(File.separator)){ ? ??
? ? ? dir = dir+File.separator; ? ??
? } ? ??
? File dirFile = new File(dir); ? ??
? //如果dir对应的文件不存在,或者不是一个目录,则退出 ? ??
? if(!dirFile.exists() || !dirFile.isDirectory()){ ? ??
? ? ? System.out.println("删除目录失败"+dir+"目录不存在!"); ? ??
? ? ? return false; ? ??
? } ? ??
? boolean flag = true; ? ??
? //删除文件夹下的所有文件(包括子目录) ? ??
? File[] files = dirFile.listFiles(); ? ??
? for(int i=0;i<files.length;i++){ ? ??
? ? ? //删除子文件 ? ??
? if(files[i].isFile()){ ? ??
? ? ? flag = deleteFile(files[i].getAbsolutePath()); ? ??
? ? ? if(!flag){ ? ??
? ? ? ? ? break; ? ??
? ? ? } ? ??
? } ? ??
? //删除子目录 ? ??
? ? ? else{ ? ??
? ? ? ? ? flag = deleteDirectory(files[i].getAbsolutePath()); ? ??
? ? ? ? ? if(!flag){ ? ??
? ? ? ? ? ? ? break; ? ??
? ? ? ? ? } ? ??
? ? ? } ? ??
? } ? ??
?
? if(!flag){ ? ??
? ? ? System.out.println("删除目录失败"); ? ??
? ? ? return false; ? ??
? } ? ??
?
? //删除当前目录 ? ??
? if(dirFile.delete()){ ? ??
? ? ? System.out.println("删除目录"+dir+"成功!"); ? ??
? ? ? return true; ? ??
? }else{ ? ??
? ? ? System.out.println("删除目录"+dir+"失败!"); ? ??
? ? ? ? ? return false; ? ??
? ? ? } ? ??
? }