文件的上传:
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
//解析请求
List<FileItem> items = upload.parseRequest(req);
//遍历所有的fileitem的对象呢,每一个对象代表一个输入框
for(FileItem item:items){
//判断这个输入框是否为一个普通的表单
if(item.isFormField()){
String name = item.getName();
String value = item.getString();
System.out.println("表单域"+name+",value:"+value);
//是文件
}else{
//输入框的name
String filename = item.getFieldName();
System.out.println("filename:"+filename);
//文件名
String name = item.getName();
System.out.println("name:"+name);
//输入流
InputStream is = item.getInputStream();
//获取当前项目
String sc = getServletContext().getRealPath("/");
//获取当前系统时间
LocalDate now = LocalDate.now();
String xdPath = "files/"+now.getYear()+"/"+now.getMonthValue()+"/"+now.getDayOfMonth()+"/";
String path = sc+xdPath;
File pathDir = new File(path);
if(!pathDir.exists()){
pathDir.mkdirs();
}
//获取一个当前时间
DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE;
String dateStr = formatter.format(now);
String date = dateStr+System.currentTimeMillis()+(int)(Math.random()*100);
//取出扩展名
String extName = name.substring(name.lastIndexOf("."));
String fname = date+extName;
//存入数据库中的路径
String dbPath = xdPath+fname;
String md5 = getMD5ValueOfFile("C://Users/AA/Desktop/qqqq"+name);
System.out.println(md5);
//输出流
OutputStream os = new FileOutputStream(pathDir+"/"+fname);
IOUtils.copy(is, os);
//创建一个对象
MyFile dbFile = new MyFile(name, dbPath,md5);
//存入数据库
new FileService().add(dbFile);
is.close();
os.close();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jsp页面
<h1>文件上传</h1>
<form action="Up2" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">