zoukankan      html  css  js  c++  java
  • Spring 中Apache Commons上传文件

    在用Apache Commons完成文件上传功能需有的几步:

    1、导入两个架包:commons-fileupload.jar和commons-io.jar

    maven中:

     1 <dependency>
     2         <groupId>commons-fileupload</groupId>
     3         <artifactId>commons-fileupload</artifactId>
     4         <version>1.3</version>
     5     </dependency>
     6     
     7     <dependency>
     8         <groupId>commons-io</groupId>
     9         <artifactId>commons-io</artifactId>
    10         <version>2.4</version>
    11     </dependency>

    2、修改配置文件,在spring-servlet中添加一个bean,代码如下:

     1 <!-- 处理上传文件 -->
     2     <bean id="multipartResolver"
     3         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     4         <!-- set the max upload size100MB -->
     5         
     6         <!-- 设置最大文件大小 -->
     7         <property name="maxUploadSize">
     8             <value>104857600</value>
     9         </property>
    10         <!-- 设置最大内存大小 --> 
    11         <property name="maxInMemorySize">
    12             <value>10240</value>
    13         </property>
    14         <!-- 设置上传后的目录名 -->
    15         <property name="uploadTempDir">
    16         <value>"./upload/"</value>
    17         </property> 
    18     </bean>
    19     

    注意这里配置的上传的目录名是临时的,并不是上传文件后文件所在的位置,这里只是缓存用的。文件上传后真正的位置要在Controller中指出

    3、jsp页面和Controller中的内容

    jsp页面:

    1 <form action="./handleUploadData" method="post" enctype="multipart/form-data">
    2    文件名:<input type="text" name="name"><br>
    3           <input type="file" name="file">
    4 <input type="submit" class="btn btn-primary" value="上传">
    5 </form>

    这里的文件名是在为了在保存上传文件时便于区分文件,上传的文件已用户输入的文件名显示

    Controller:

     1  private ServletContext servletContext;
     2     
     3     @Override
     4     public void setServletContext(ServletContext context){
     5         this.servletContext =context;
     6     }
     7     
     8     @RequestMapping("**/handleUploadData")
     9     //在上传时,@RequestParam("file")必须加,不然就会出现错误
    10     public String handleUploadData(String name,@RequestParam("file") CommonsMultipartFile file){
    11         
    12         if(!file.isEmpty()){
    13             String path=this.servletContext.getRealPath("/upload/");  //获取本地存储路径    
    14             
    15             String fileName=file.getOriginalFilename();
    16             
    17             String fileType=fileName.substring(fileName.lastIndexOf("."));  //获取上传文件的类型
    18             System.out.println(fileType);
    19             File file2=new File(path,name+fileType);  //新建一个文件
    20             
    21             
    22             
    23             try {
    24                 file.getFileItem().write(file2);  //将上传的文件写入新的文件中
    25             } catch (Exception e) {
    26                 // TODO Auto-generated catch block
    27                 e.printStackTrace();
    28             }
    29             return "upload_ok";
    30         }
    31         else{
    32             return "upload_error";
    33         }
    34     }
  • 相关阅读:
    调度思想-现实中的事物与技术里面其实存在类似道理(转载收藏的一篇好文)
    使用curl发送post或者get数据
    论技术的重要性(转载的一篇文章)
    facebook工具xhprof的安装与使用-分析php执行性能(转载)
    (转载)网站瓶颈发现和解决
    mysql不乱码的思想总结
    如何在同一台机器上安装多个MySQL的实例
    awk的常用操作场景以及工作中涉及到的一些场景实例
    Linux中的yum的配置以及常见报错的处理
    (转载)感触比较深的一篇文章
  • 原文地址:https://www.cnblogs.com/John-Lyn/p/3897525.html
Copyright © 2011-2022 走看看