Java上传文件实例

package com.yc.eap.util;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.log4j.Logger;

public class UpLoad {

public static final Logger logger = Logger.getLogger(UpLoad.class);
private HttpServletRequest request = null;
private static int fileSize = 200;
private String filePath;
private Map<String,Object> map = new HashMap<String,Object>();

public UpLoad(HttpServletRequest request){
this.request = request;
}

public void upLoad() throws Exception{
String name = null;
DiskFileUpload fu = new DiskFileUpload();
/**用于设定请求消息中实体内容的最大允许大小,这里设置最大上传文件的大小为200M*/
fu.setSizeMax(fileSize*1024*1024);
/**设置用临时文件来存放临时解析出的数据值,临时数据值的临界值为1M*/
fu.setSizeThreshold(1024*1024);
/**用于存放临时文件的存放目录,必需为绝对路径,如果不设定将存放在Tomcat目录下的temp文件下*/
fu.setRepositoryPath("/temp/upload/");
/**parseRequest(request)方法是DiskFileUpload的重要方法是Http请求的入口,如果请求消息中的实体不是
* "multipart/form-data",该方法将抛出异常*/
FileUploadBase.isMultipartContent(request);
List filelist = null;
try {
filelist = fu.parseRequest(request);
} catch (FileUploadException e) {
logger.info("消息实体不是multipart/form-data类型"+e.getMessage());
map.put("flag", "false");

}
Iterator i = filelist.listIterator();
while(i.hasNext()){
FileItem fi = (FileItem)i.next();
if(fi.isFormField()){
String fieldName = fi.getFieldName();
String fieldValue = fi.getString();
map.put(fieldName, fieldValue);
}else{
String fileName = fi.getName();
if(fileName.trim().equals("")){
continue;
}else{
int start = fileName.lastIndexOf('\\');
name = this.produceName()+fileName.substring(start+1);
/**此处需要设置获取应用的路径名称用来存放文件*/
File file = null;
if(this.filePath==null || "".equals(this.filePath)){
file = new File("D:/tomcat-eap/webapps/eap/upLoad/",name);
/**如果文件已经存在,则删除原有文件,上传新文件覆盖原有文件。*/
if(file.exists()){
file.delete();
}
}else{
file = new File(this.filePath,name);
/**如果文件已经存在,则删除原有文件,上传新文件覆盖原有文件。*/
if(file.exists()){
file.delete();
}
}
try{
fi.write(file);
map.put("flag", "true");
} catch (Exception e) {
logger.info("文件写入错误"+e.getMessage());
throw e;
}finally{
fi.delete();
map.put("flag", "false");
}
}
}
}

}

public String getFilePath() {
return filePath;
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}

public String getParameter(String key){
return (String)map.get(key);
}

public static UpLoad getInstance(HttpServletRequest request) {
return new UpLoad(request);
}
/**通过日期函数进行区分,保证同时上传文件不会冲突*/
private String produceName(){
Calendar ca = Calendar.getInstance();
ca.setTime(new java.util.Date());
SimpleDateFormat simple = new SimpleDateFormat("yyyyMMddkkmmss");
String date = simple.format(ca.getTime());
return date;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值