• Apache FileUpload实现文件上传


      今天,我来介绍一个Apache FileUpload这个插件的使用。

      首先,到官网下载相关jar包点击这里下载,这里提供是v1.2.

      1.在项目中导入相关jar包commons-fileupload-1.2.2.jar 、commons-io-2.0.1.jar这两个包;

      2.建立如下a.jsp(这里只提供核心代码)

             <form name="form1" action="${ctx}/ware/WaretServlet?action=modify_ware" method="post" class="niceform" enctype="multipart/form-data">
             <input type="hidden" name="WareID" value="${ware.wareID}"/>
                    <fieldset>
                        <dl>
                            <dt><label for="email">商品名称:</label></dt>
                            <dd><input type="text" name="WareName" value="${ware.wareName}" id="" size="54" /></dd>
                        </dl>                              
                        <dl>
                            <dt><label for="upload">上传图片:</label></dt>
                            <dd><input type="file" name="PicUrl" id="upload" value="${ware.picUrl}"/></dd>
                        </dl>                
                         <dl class="submit">
                        <input type="submit" name="submit" id="submit" value="修改" />
                        <input type="reset" name="submit" id="submit" value="重填" />
                         </dl> 
                                      
                    </fieldset>
                    
             </form>

    3.建立如下servlet WareServlet

     1     private void modify_ware(HttpServletRequest request,
     2             HttpServletResponse response)  throws ServletException, IOException {
     3         DiskFileItemFactory f = new DiskFileItemFactory();//磁盘对象
     4         f.setRepository(new File("d:/a"));//设置临时目录
     5         f.setSizeThreshold(1024*8);//8k的缓冲区,文件大于8K则保存到临时目录
     6         ServletFileUpload upload = new ServletFileUpload(f);//声明解析request的对象
     7         upload.setHeaderEncoding("utf-8");//处理中文
     8         upload.setSizeMax(1024*1024*10);//设置单个文件最大为10M
     9         upload.setSizeMax(1024*1024*20);//最多能上传20M
    10         String path = getServletContext().getRealPath("/imgs");//获取文件要保存的目录
    11         try 
    12         {
    13             List<String> paramli = new ArrayList<String>();
    14             @SuppressWarnings("unchecked")
    15             List<FileItem> list = upload.parseRequest(request);// 解析
    16             for (FileItem ff : list) 
    17             {
    18                 if (ff.isFormField()) 
    19                 {
    20                     String ds = ff.getString("UTF-8");//处理中文
    21                     //System.err.println("说明是:" + ds);
    22                     paramli.add(ds);
    23                 } 
    24                 else 
    25                 {
    26                     String ss = ff.getName();
    27                     System.out.println(ss);
    28                     paramli.add(ss);
    29                     //request.setAttribute("filename",ss);
    30                     ss = ss.substring(ss.lastIndexOf("\") + 1);//解析文件名
    31                     ////直接使用commons.io.FileUtils
    32                     FileUtils.copyInputStreamToFile(ff.getInputStream(),new File(path + "/" + ss));
    33                 }
    34             }
    35             for(String s:paramli)
    36             {
    37                 System.out.print(s+" ");
    38             }
    39                     } 
    40         catch (Exception e) 
    41         {
    42             e.printStackTrace();
    43         }
    44     }

      到这里就ok了。这里的代码由于删减可能有小问题,稍微调试一下就可以了

  • 相关阅读:
    正则表达式-入门初探
    pytorch 对变长序列的处理
    数位DP小结
    impala 使用记录
    2017微软第二场笔试题解
    一次分清:jvm内存结构|jmm|java对象模型
    JMM-java内存模型
    java基础总结
    有关秒杀的一点思考
    Elasticsearch 启动报了TypeError: can’t dup Fixnum 错
  • 原文地址:https://www.cnblogs.com/liuyq/p/3523214.html
Copyright © 2020-2023  润新知