`

Java Web之SpringMVC 上传文件

阅读更多

  虽然前面两篇文章详细阐述了文件上传,但网上这篇文章还是比较清晰明了,且针对文件超出大小有专门的处理配置和显示页面,特也记录一下。

一.首先是web.xml的配置

<?xml version="1.0" encoding="UTF-8"?> 
<servlet> 
        <servlet-name>upload</servlet-name>    
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
        <servlet-name>upload</servlet-name> 
        <url-pattern>/</url-pattern> 
</servlet-mapping> 

<!—加入过滤器就是为了上传名字是中文的文件时 上传到服务器上的文件名不会乱码--> 
<filter> 
        <filter-name>SpringCharacterEncodingFilter</filter-name> 
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
        <init-param> 
              <param-name>encoding</param-name> 
              <param-value>UTF-8</param-value> 
         </init-param> 
</filter> 
<filter-mapping> 
        <filter-name>SpringCharacterEncodingFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
</filter-mapping> 

 

二.SpringMVC的配置文件upload-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<context:component-scan base-package="com.yf.upload"/> 
<mvc:annotation-driven/>
   <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="prefix" value="/WEB-INF/jsp/"/> 
        <property name="suffix" value=".jsp"/> 
</bean>

    <!-- SpringMVC上传文件时,需配置MultipartResolver处理器 --> 
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> 
        <property name="maxUploadSize" value="200000"/> 
</bean> 
    <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException        --> 
    <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 --> 
<bean id="exceptionResolver"class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 
        <property name="exceptionMappings"> 
            <props> 
            <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 --> 
                <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop> 
            </props> 
        </property> 
    </bean> 
</beans> 

 

三.用于上传的表单页面/WEB-INF/jsp/upload.jsp

<%@ page language="java" pageEncoding="UTF-8"%> 
<form  method="POST" enctype="multipart/form-data"> 
    yourfile: <input type="file" name="myfiles"/><br/> 
    yourfile: <input type="file" name="myfiles"/><br/> 
    yourfile: <input type="file" name="myfiles"/><br/> 
    <input type="submit" value="上传文件"/> 
</form> 

 

四.上传文件过大时的页面/WEB-INF/jsp/error_fileupload.jsp

<%@ page language="java" pageEncoding="UTF-8"%> 
<h1>文件过大,请重新选择</h1>

 

五.最后是核心的UploadController.java

/**
 * SpringMVC中的文件上传步骤:
 * @第一步:由于SpringMVC使用的是commons-fileupload实现,故将其组件引入项目中,这里用到的是commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar
 * @第二步:在####-servlet.xml中配置MultipartResolver处理器。可在此加入对上传文件的属性进行限制
 *@第三步:在Controller的方法中添加MultipartFile参数。该参数用于接收表单中file组件的内容
 *@第四步:编写前台表单。注意enctype="multipart/form-data"以及<input type="file" name="**"/> name要和后台接收参数时的名字相同
*/ 
@Controller
public class TestController
{
  @RequestMapping(value="/uploadfile",method=RequestMethod.GET)
  public String upLoadFile()
   {
       return "upload";
   }
  @RequestMapping(value="/uploadfile",method=RequestMethod.POST)
  public String upLoadFile(@RequestParam MultipartFile[] myfiles, HttpServletRequest request) throws IOException
   { 
      //如果只是上传一个文件,则只需要MultipartFile类型接收文件即可,而且无需显式指定@RequestParam注解 
      //如果想上传多个文件,那么这里就要用MultipartFile[]类型来接收文件,并且还要指定@RequestParam注解 
      //并且上传多个文件时,前台表单中的所有<input type="file"/>的name都应该是myfiles,否则参数里的myfiles无法获取到所有上传的文件 
       for(MultipartFile myfile : myfiles)
      { 
          if(myfile.isEmpty())
          { 
                System.out.println("文件未上传"); continue;
          }
        else
          { 
                System.out.println("文件长度: " + myfile.getSize()); 
                System.out.println("文件类型: " + myfile.getContentType()); 
                System.out.println("文件名称: " + myfile.getName()); 
                System.out.println("文件原名: " + myfile.getOriginalFilename()); 
                System.out.println("==================="); 

                //如果用的是Tomcat服务器,则文件会上传到\%TOMCAT_HOME%\webapps\YourWebProject\WEB-INF\upload\文件夹中 
                String realPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload"); 
                //这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉,我是看它的源码才知道的 
                FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(realPath + "/" +myfile.getOriginalFilename())); 
           } 
       } 
          return " success_fileupload "; 
    } 
} 

 

六.上传文件成功的页面/WEB-INF/jsp/success_fileupload.jsp

<%@ page language="java" pageEncoding="UTF-8"%> 
<h1>恭喜你,文件上传成功</h1> 

 

文章来源:简书,作者具体的地址在我写时没有找到

分享到:
评论

相关推荐

    springmvc上传文件controller,vue

    同时,确保前端和后端的安全性,比如使用CSRF令牌防止跨站请求伪造,以及对上传文件进行适当的权限控制。 最后,项目中的"新建文件夹"可能表示在服务器端需要创建一个目录来存储上传的文件。你可以使用Java的`java....

    SpringMVC文件上传,多文件上传实例

    SpringMVC是一个强大的Java web开发框架,由Spring公司推出,它是Spring框架的重要组成部分,主要用于处理HTTP请求和响应。在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中...

    IDEA SpringMVC 实现文件的上传下载

    -- 指定最大上传文件大小 --&gt; ``` 3. **Controller层处理**: 创建一个Controller类,定义两个方法,分别处理文件上传和下载的请求。在上传方法中,通过`@RequestParam("file") MultipartFile file`接收上传...

    Springmvc上传文件.docx

    SpringMVC 上传文件详解 SpringMVC 框架中上传文件是非常常见的操作,今天我们来详细讲解 SpringMVC 中的文件上传过程。 文件上传的必要条件 在 SpringMVC 中,文件上传需要满足以下几个条件: 1. 表单的 ...

    SpringMVC上传文件 SSH上传文件

    在开发Web应用时,文件上传和下载功能是常见的需求,特别是在处理用户数据或者提供资源服务时。本主题将深入探讨如何使用SpringMVC和SSH(Struts2 + Hibernate + Spring)框架来实现文件的上传与下载。 首先,我们...

    SpringMVC上传文件的四种方法

    -- 设置最大上传文件大小 --&gt; ``` 在Controller中,同样可以使用`@RequestParam`接收文件: ```java @PostMapping("/upload") public String handleFileUpload(@RequestParam("file") MultipartFile file...

    springMVC上传文件.zip_springmvc_上传文件_文件上传

    上传文件时要考虑安全性,包括防止文件覆盖、恶意文件上传(如脚本注入)、文件权限设置等。应验证文件类型、大小,并对文件名进行清理,避免特殊字符和路径遍历攻击。 9. **最佳实践** 使用流式处理文件,减少...

    springmvc上传文件到FTP

    结合这两者,我们可以创建一个功能,允许用户通过Web界面上传文件并将其存储在FTP服务器上。 首先,我们需要在`mmall.properties`配置文件中设置FTP服务器的相关信息,包括主机地址、端口号、用户名、密码以及目标...

    SpringMVC单文件上传、多文件上传、文件列表显示、文件下载

    在SpringMVC框架中,文件上传和下载是常见的功能需求,尤其在开发Web应用程序时。本文将详细讲解如何实现SpringMVC中的单文件上传、多文件上传、文件列表显示以及文件下载。 首先,我们需要理解SpringMVC处理文件...

    blog.rar_impossible5ts_java web_springmvc_博客

    标题 "blog.rar_impossible5ts_java web_springmvc_博客" 暗示这是一个关于Java Web开发的项目,特别涉及SpringMVC框架,用于构建一个简单的个人博客平台。描述提到这个博客系统具备前后端功能,支持用户上传日记和...

    springmvc ajax 文件上传

    这两种方法都是在Web应用中处理用户上传文件的常见方式,特别是当需要在后台处理文件且不刷新整个页面时,AJAX上传就显得尤为重要。 首先,我们来看**Spring MVC**。Spring MVC是Spring框架的一个模块,专门用于...

    JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告.docx

    在创建用于上传文件的表单时,需要指定`enctype`属性为`multipart/form-data`。这是因为这种编码类型允许表单数据中包含二进制文件,如图片、文档等。例如: ```html 上传"/&gt; ``` 这里的`/upload`是处理文件...

    java-springmvc图片上传

    在Java Web开发中,Spring MVC是一个非常流行的框架,它提供了模型-视图-控制器(MVC)模式,用于构建高效、可维护的Web应用程序。在这个项目"java-springmvc图片上传"中,我们关注的核心是Spring MVC如何处理图片的...

    springMVC 与文件 上传 下载 实例

    在Spring MVC框架中,文件上传和下载是常见的需求,尤其在构建Web应用程序时。下面将详细阐述如何使用Spring MVC实现这些功能,以及如何添加文件压缩的特性。 首先,我们需要了解Spring MVC中的MultipartFile接口,...

    springMVC多文件上传demo

    这通常在`WebMvcConfigurerAdapter`的`configureMultipartSettings`方法中完成,设置最大上传文件大小等相关参数。 5. **控制器方法** 控制器中需要定义一个接收`MultipartFile[]`类型的参数的方法,用于接收上传...

    SpringMVC文件上传Demo代码

    在这个示例中,`@RequestParam("file") MultipartFile file`参数表示从请求中获取名为"file"的上传文件。如果文件不为空,代码会尝试读取文件内容并将其保存到服务器。如果在处理过程中出现异常,会返回错误信息。 ...

    基于springMVC的文件上传功能

    在实际应用中,要注意文件上传的安全性,防止恶意文件上传,比如通过限制文件类型、大小,以及对上传文件进行病毒扫描等。 8. **测试与部署** 使用eclipse的内置Tomcat服务器启动项目,访问创建的上传页面,上传...

    springmvc上传文件实时显示进度条

    在这个特定的项目"springmvc上传文件实时显示进度条"中,我们关注的是如何在文件上传过程中为用户展示进度信息,以提高用户体验。这个项目适用于那些需要处理大文件上传并希望提供反馈的Web应用。 首先,要实现文件...

    SpringMVC+Ajax异步文件上传

    `SpringMVC`作为Java后端的一个强大框架,提供了处理文件上传的能力。而`Ajax`技术则使得页面可以在不刷新的情况下与服务器进行交互,实现异步上传,极大地提升了用户体验。在本教程中,我们将探讨如何结合`...

    springmvc实现文件上传jar包

    在Spring MVC框架中,文件上传是一项常见的功能,用于允许用户通过Web应用程序上传文件。要实现这一功能,我们需要依赖一些特定的库和配置。本篇文章将详细介绍如何在Spring MVC中实现文件上传,并涉及到所需的jar包...

Global site tag (gtag.js) - Google Analytics