• SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】


          注意:此文章是个人原创。希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力。LinusZhu在此表示十分感谢,当然文章中如有纰漏。请联系linuszhu@163.com。敬请朋友们斧正。谢谢。

          不知不觉已经把Spring的基础部分解说完了。所讲述的都是在项目中经经常使用到的东西。是经得住考验的。接下来的部分主要是要讲述使用SpringMVC进行的文件上传、处理Ajax请求、自己定义拦截器功能的实现,不多说了,首先解说文件上传部分,開始……

          主要过程例如以下:

    1. 须要使用apache-commons下得上传组件。须要引入两个jar包:

    apache-commons-fileupload.jar、apache-commons-io.jar

    2.  Springmvc-servlet.xml配置文件里。添加CommonsMultipartResoler配置。例如以下:

    <bean id="multipartResolver"  

        class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >  

        <property name="defaultEncoding" value="gbk"/> <!-- 默认编码 (ISO-8859-1) -->  

        <property name="maxInMemorySize" value="10240"/> <!-- 最大内存大小 (10240)-->  

        <property name="uploadTempDir" value="/upload/"/> <!-- 文件暂存地址,不是终于的文件文件夹 -->  

        <property name="maxUploadSize" value="-1"/> <!-- 最大文件大小,-1为无限止(-1) -->  

    </bean>

    3.创建upload.jsp页面,内容例如以下:

    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <title>SpringMVC文件上传</title>

    </head>

    <body bgcolor="#d6e3f6">

    <form action="upload.do" method="post" enctype="multipart/form-data">

    <input type="file" name="file" />

    <br/><input type="submit" />

    </form>

    </body>

    </html>

    4. 建立控制器,代码例如以下:

    package  com.spring.controller;

    import java.io.File;

    import java.util.Date;

    import javax.servlet.ServletContext;

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RequestMethod;

    import org.springframework.web.bind.annotation.RequestParam;

    import org.springframework.web.context.ServletContextAware;

    import org.springframework.web.multipart.commons.CommonsMultipartFile;

    @Controller

    public  class  FileUploadController  implements  ServletContextAware {

    private ServletContext servletContext;

    @Override

    public void setServletContext(ServletContext context) {

    this.servletContext  = context;

    }

    //@RequestParam("file")一定要有

    @RequestMapping(value="/upload.do")

    public  String handleUploadData(@RequestParam("file")  CommonsMultipartFile file){

    if (!file.isEmpty()) {

                 //获取本地存储路径

       String path = this.servletContext.getRealPath("/uploadFile/");        System.out.println(path);

       String fileName = file.getOriginalFilename();

       String fileType = fileName.substring(fileName.lastIndexOf("."));

       System.out.println(fileType); 

                 //新建一个文件

       File file2 = new File(path,new Date().getTime() + fileType);     try {

                      //将上传的文件写入新建的文件里

        file.getFileItem().write(file2);

       } catch (Exception e) {

        e.printStackTrace();

                      return "redirect:upload_error.jsp";

       }

       return "redirect:upload_ok.jsp";

    }else{

    return "redirect:upload_error.jsp";

    }

    }

    }

    5. 建立upload_ok.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

      <head>

      </head>

      <body>

       <h1>上传文件成功</h1>

      </body>

    </html>

     6. 建立upload_error.jsp页面

      <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

      <head>

      </head>

      <body>

       <h1>上传文件失败</h1>

      </body>

    </html>

     7. 项目执行測试:

    输入地址:http://localhost:8081/SpringMVC02/upload.jsp ,选择要上传文件,例如以下:

     

    点击提交。上传成功返回成功界面:

    进入项目公布后的上传文件路径(uploadFile目录以下),会发现上传的文件,例如以下:

     

     

     

  • 相关阅读:
    PG-日常管理
    PG-高可用(pgpool-Ⅱ)
    PG-基准测试
    PG-备份恢复
    PG-并发问题
    Go-常量
    Go-变量
    Oracle-11g升级PSU补丁
    Oracle-`sqlplus`工具使用技巧
    [CF1051F] The Shortest Statement
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5140457.html
Copyright © 2020-2023  润新知