servlet实现文件上传

来源:互联网 发布:stm8 c语言编程 编辑:程序博客网 时间:2024/05/02 01:35

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;
 }
}

 

实体类自己写好,就可以实现上传了。

 

 

 

0 0
原创粉丝点击