• jsp处理表单上传图片(commons-fileupload-1.2.2.jar,commons-io-2.4.jar)


    upload.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     3 <html>
     4   <head>
     5     <title>上传图片的表单页面</title>
     6     <meta http-equiv="pragma" content="no-cache">
     7     <meta http-equiv="cache-control" content="no-cache">
     8     <meta http-equiv="expires" content="0">    
     9     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    10     <meta http-equiv="description" content="This is my page">
    11   </head>
    12   <body>
    13     <form action="uploaddo.jsp" method="post" enctype="multipart/form-data">
    14         <table>
    15             <tr>
    16                 <td>姓名:</td>
    17                 <td><input type="text" name="txtUserName" /></td>
    18             </tr>
    19             <tr>
    20                 <td>性别:</td>
    21                 <td>
    22                     <input type="radio" name="rdoSex" value="男" checked="checked"/>23                     <input type="radio" name="rdoSex" value="女"/>24                 </td>
    25             </tr>
    26             <tr>
    27                 <td>教育:</td>
    28                 <td>
    29                     <select name="selEdu">
    30                         <option value="小学">小学</option>
    31                         <option value="中学">中学</option>
    32                         <option value="大学">大学</option>
    33                     </select>
    34                 </td>
    35             </tr>
    36             <tr>
    37                 <td>爱好:</td>
    38                 <td>
    39                     <input type="checkbox" name="rdoHibby" value="篮球"/>篮球
    40                     <input type="checkbox" name="rdoHibby" value="足球"/>足球
    41                     <input type="checkbox" name="rdoHibby" value="排球"/>排球
    42                 </td>
    43             </tr>
    44             <tr>
    45                 <td>图片:</td>
    46                 <td><input type="file" name="txtPhoto" /></td>
    47             </tr>
    48             <tr>
    49                 <td colspan="2">
    50                     <input type="submit" value="提交"/>
    51                 </td>
    52             </tr>
    53         </table>
    54     </form>
    55   </body>
    56 </html>
    View Code

    uploaddo.jsp

      1 <%@ page language="java" pageEncoding="UTF-8"%>
      2 <%@ page import="java.util.*,java.io.*,java.lang.*" %>
      3 <%@ page import="org.apache.commons.fileupload.*"%>
      4 <%@ page import="org.apache.commons.fileupload.disk.*"%>
      5 <%@ page import="org.apache.commons.fileupload.servlet.*"%>
      6 <%
      7     HashMap<String,ArrayList<String>> mapField =new HashMap<String,ArrayList<String>>();
      8     HashMap<String,ArrayList<String>> mapFile =new HashMap<String,ArrayList<String>>();
      9     request.setCharacterEncoding("utf-8");
     10     response.setCharacterEncoding("utf-8");
     11     boolean isMultipart = ServletFileUpload.isMultipartContent(request);
     12     if (isMultipart) {
     13         try {
     14             DiskFileItemFactory factory = new DiskFileItemFactory();
     15             factory.setSizeThreshold(1024 * 4);//设置缓冲区4kb
     16             String bufferFilePath = request.getSession().getServletContext().getRealPath("temp/buffer");
     17             factory.setRepository(new File(bufferFilePath));//设置上传文件用到临时文件存放路径
     18             ServletFileUpload upload = new ServletFileUpload(factory);
     19             upload.setFileSizeMax(1024 * 1024 * 3);//设置单个文件的最大限制
     20             List<FileItem> items = upload.parseRequest(request);
     21             Iterator<FileItem> iter = items.iterator();
     22             while (iter.hasNext()) {
     23                 FileItem item = iter.next();
     24                 String fieldName = item.getFieldName();//获取name
     25                 if (item.isFormField()) {
     26                     //如果是表单字段
     27                     String fieldValue = item.getString("utf-8");//获取value
     28                     ArrayList<String> list = null;
     29                     if(mapField.containsKey(fieldName)){
     30                         list = mapField.get(fieldName);
     31                     }else{
     32                         list = new ArrayList<String>();
     33                     }
     34                     list.add(fieldValue);
     35                     mapField.put(fieldName, list);
     36                 } else {
     37                     //如果是上传控件
     38                     String uploadFileName = item.getName();//读取上传图片文件名称
     39                     if (uploadFileName != null && !uploadFileName.equals("")) {
     40                         String uuid = UUID.randomUUID().toString();
     41                         String fileType = uploadFileName.substring(uploadFileName.lastIndexOf("."));
     42                         String fileName = "upload/" + uuid + fileType;
     43                         String uploadFilePath = request.getSession().getServletContext().getRealPath("/");
     44                         File saveFile = new File(uploadFilePath, fileName);
     45                         item.write(saveFile);//保存上传图片到服务器
     46                         ArrayList<String> list = null;
     47                         if(mapFile.containsKey(fieldName)){
     48                             list = mapFile.get(fieldName);
     49                         }else{
     50                             list = new ArrayList<String>();
     51                         }
     52                         list.add(fileName);
     53                         mapFile.put(fieldName, list);
     54                     }
     55                 }
     56             }
     57         } catch (FileUploadBase.FileSizeLimitExceededException ex) {
     58             out.print("上传文件失败,文件超过3M。");
     59         } catch (FileUploadBase.IOFileUploadException ex) {
     60             out.print("设置上传文件用到临时文件存放路径不存在。");
     61         } catch (Exception ex) {
     62             out.print(ex);
     63         }
     64     }
     65 %>
     66 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     67 <html>
     68 <head>
     69     <title>处理上传图片的表单页面</title>
     70     <meta http-equiv="pragma" content="no-cache">
     71     <meta http-equiv="cache-control" content="no-cache">
     72     <meta http-equiv="expires" content="0">
     73     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     74     <meta http-equiv="description" content="This is my page">
     75 </head>
     76 <body>
     77     <%
     78         for(Map.Entry<String,ArrayList<String>> field : mapField.entrySet())
     79         {
     80             String key = field.getKey();
     81             List<String> values = field.getValue();
     82             StringBuffer sb = new StringBuffer();
     83             for(String value : values){
     84                 sb.append(value);
     85                 sb.append(",");
     86             }
     87             String value = sb.toString();
     88             out.print(String.format("name:%s,&nbsp;&nbsp;&nbsp;&nbsp;value:%s<br/>",key,value));
     89         }
     90      %>
     91      <hr/>
     92      <%
     93          for(ArrayList<String> values : mapFile.values())
     94         {
     95             for(String value : values){
     96                 out.print(String.format("<img src='%s' style='300px;heigth:300px'/><br/>",value));
     97             }
     98         }
     99      %>
    100 </body>
    101 </html>
    View Code
  • 相关阅读:
    perl 解json数组
    华为云3大体系化防护实践,保障金融业云上数据安全
    弹性文件服务解密 -- 块存储、文件存储、对象存储的区别
    【nodejs原理&源码赏析(6)】深度剖析cluster模块源码与node.js多进程
    云+AI+5G时代,华为云已准备好多元化云服务架构
    高能街访 | 为什么他们都纷纷为深圳打Call?
    Angularjs进阶笔记(2)—自定义指令中的数据绑定
    Angularjs进阶笔记(1)—不同类型的双向数据绑定
    ServiceComb java-chassis和CSE java-chassis的区别
    使用inspector功能查看和管理契约
  • 原文地址:https://www.cnblogs.com/qiyebao/p/3663483.html
Copyright © 2020-2023  润新知