文件上传和字段匹配

 

jsp页面中

    <form action="${pageContext.request.contextPath}/servlet/ManagerServlet?operation=addBook" method="post" enctype="multipart/form-data">

FileItem的用法

http://blog.csdn.net/smallhorn/article/details/7864658

      1.boolean  isFormField()。isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段。如果是普通文本表单字段,返回一个true否则返回一个false。因此可以用该方法判断是否是普通表单域还是文件上传表单域。

      2.String getName()。getName方法用来获得文件上传字段中的文件名。

      3.String getFieldName()。getFieldName方法用来返回表单标签的name属性的值。

      5.String getString()。getString()方法将FileItem对象中保存的数据流内容以一个字符串返回。它有两个重载形式。public java.lang.String getString()和public java.lang.String getString(java.lang.String 

servlet中

 1 //添加书籍到数据库中
 2     private void addBook(HttpServletRequest request,
 3             HttpServletResponse response) throws ServletException, IOException {
 4         String resultPath = "";
 5         String storePath = getServletContext().getRealPath("/files");
 6         try {
 7             Book book = new Book();
 8             
 9             DiskFileItemFactory factory = new DiskFileItemFactory();
10             ServletFileUpload upload = new ServletFileUpload(factory);
11             //解析请求
12             List<FileItem> items = upload.parseRequest(request);        
13             for(FileItem item:items){
14                 if(item.isFormField()){
15                     //封装数据到JavaBean中
16                     String fieldName = item.getFieldName();//字段名,即javabean的属性名,除了图片
17                     String fieldValue = item.getString(request.getCharacterEncoding());
18                     BeanUtils.setProperty(book, fieldName, fieldValue);//除了图片路径,其他数据都有了
19                 }else{
20                     //处理文件上传
21                     InputStream in = item.getInputStream();
22                     String fileName = item.getName();//   c:\dsf\a.jpg
23                     fileName = UUID.randomUUID()+fileName.substring(fileName.lastIndexOf("\\")+1);//a.jpg 
24                     //设置存取的图片文件名
25                     book.setImage(fileName);
26                     OutputStream out = new FileOutputStream(storePath+"\\"+fileName);
27                     byte b[] = new byte[1024];
28                     int len = -1;
29                     while((len=in.read(b))!=-1){
30                         out.write(b, 0, len);
31                     }
32                     out.close();
33                     in.close();
34                     item.delete();//删除临时文件
35                 }
36             }
37             s.addBook(book);
38             //查询分类
39             List<Category> cs = s.findAllCategory();
40             request.setAttribute("cs", cs);
41             resultPath = "/manager/addBook.jsp";
42             request.setAttribute("message", "<script type='text/javascript'>alert('添加成功')</script>");
43         } catch (Exception e) {
44             e.printStackTrace();
45             resultPath = "/message.jsp";
46             request.setAttribute("message", "服务器忙");
47         }
48         request.getRequestDispatcher(resultPath).forward(request, response);
49     }

 

你可能感兴趣的:(文件上传)