zoukankan      html  css  js  c++  java
  • 文件上传和字段匹配

    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:dsfa.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     }
  • 相关阅读:
    debug
    whlie and for
    while and for 2
    用鸿蒙开发AI应用(七)触摸屏控制LED
    animation动画组件在鸿蒙中的应用&鸿蒙的定时函数和js的动画效果
    2020技术征文大赛获奖名单公示
    HarmonyOS三方件开发指南(8)——RoundedImage
    从微信小程序到鸿蒙js开发【02】——数据绑定&tabBar&swiper
    从微信小程序到鸿蒙js开发【01】——环境搭建&flex布局
    HarmonyOS三方件开发指南(7)——compress组件
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3756665.html
Copyright © 2011-2022 走看看