upload.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String success = (String)request.getAttribute("success");
%>
<html>
<body>
<form action="/servletPro/testUpload" enctype="multipart/form-data" method="post">
<br><br>选择文件:<input type="file" name="file"/>
<input type="submit" value="提交"/>
</form>
</body>
<script type="text/javascript">
var success = '<%=success%>';
if(success!='null'){
alert(success);
}
</script>
</html>
servlet:
public class FileUploadServlet extends HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
Updown updown = new Updown();
String error = "";
byte[] file = null;
String wenjianname = null;
String wenjian = null;
List<FileItem> list = null;
try {
list = upload.parseRequest(request);
System.out.println(list.size());
} catch (Exception e) {
// TODO: handle exception
}
for(int i=0;i<list.size();i++){
FileItem fi = (FileItem)list.get(i);
if(fi.isFormField()){// 如果是表单内容
//设置到实体类中
}else{//文件
String fn = fi.getFieldName();
if("file".equals(fn)){//上传文件
file = fi.get();//上传文件内容
wenjianname = fi.getName().replaceAll("^[^.]+", "");// 类型名
wenjian = fi.getName().replaceAll("^.*[/\\\\]", "");//文件名
}
}
}
String name = wenjian.replaceAll("\\.[^\\.]*$","");
String wenjianlx = wenjianname.replaceAll("^.+\\.", "");
updown.setWjlx(wenjianlx);
updown.setFileContent(file);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
String time = sdf.format(date);
Service service = new Service();
updown.setWjml("/updown/tool/"+time);//路径
name = name + "(" + date.getTime() + ")";
updown.setWjmc(name);// 名称
try {
Updown ycf = service.saveFileJcbg(updown, "", "");
} catch (Exception e) {
e.printStackTrace();
error = "上传文件出现错误" + e.getMessage();
}
System.out.println("上传完成");
if(!"".equals(error)){
request.setAttribute("error", error);
request.getRequestDispatcher("jsp/updown/upload.jsp").forward(request, response);
}else{
request.setAttribute("success", "文件上传成功!");
request.getRequestDispatcher("jsp/updown/upload.jsp").forward(request, response);
}
}
}
service.saveFileJcbgservice.saveFileJcbgservice.saveFileJcbgservice.saveFileJcbg():
public class Service {
public Updown saveFileJcbg(Updown ycf,String lx,String xmlj) throws Exception
{
String perfix = "";
if("sp".equals(lx)){
perfix = xmlj;
}else{
perfix = "/appdata/webapp/filedata/test";
}
String filename = perfix+"/"+ycf.getWjml()+"/"+ycf.getWjmc()+ycf.getWjlx();
//String filename = perfix+"/"+ycf.getWjml()+"/"+ycf.getDlremark()+ycf.getWjlx();
filename = filename.replaceAll("[\\\\/]+", "/");
String path = filename.replaceAll("/[^/]+$", "");
System.out.println(path+"=======================");
File f = new File(path);
FileUtils.forceMkdir(f);
// save file
File file = new File(filename);
FileOutputStream fout = new FileOutputStream(file);
fout.write(ycf.getFileContent());
fout.flush();
if(fout != null)
fout.close();
ycf.setWjxgsj(new Date(file.lastModified()));
//String wjdx =UnitUtils.convertFileSize(file.length());
//ycf.setWjdx(wjdx);
return ycf;
}
}
实体类自己写好,就可以实现上传了。