虽然前面两篇文章详细阐述了文件上传,但网上这篇文章还是比较清晰明了,且针对文件超出大小有专门的处理配置和显示页面,特也记录一下。
一.首先是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>
文章来源:简书,作者具体的地址在我写时没有找到
相关推荐
同时,确保前端和后端的安全性,比如使用CSRF令牌防止跨站请求伪造,以及对上传文件进行适当的权限控制。 最后,项目中的"新建文件夹"可能表示在服务器端需要创建一个目录来存储上传的文件。你可以使用Java的`java....
SpringMVC是一个强大的Java web开发框架,由Spring公司推出,它是Spring框架的重要组成部分,主要用于处理HTTP请求和响应。在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中...
-- 指定最大上传文件大小 --> ``` 3. **Controller层处理**: 创建一个Controller类,定义两个方法,分别处理文件上传和下载的请求。在上传方法中,通过`@RequestParam("file") MultipartFile file`接收上传...
SpringMVC 上传文件详解 SpringMVC 框架中上传文件是非常常见的操作,今天我们来详细讲解 SpringMVC 中的文件上传过程。 文件上传的必要条件 在 SpringMVC 中,文件上传需要满足以下几个条件: 1. 表单的 ...
在开发Web应用时,文件上传和下载功能是常见的需求,特别是在处理用户数据或者提供资源服务时。本主题将深入探讨如何使用SpringMVC和SSH(Struts2 + Hibernate + Spring)框架来实现文件的上传与下载。 首先,我们...
-- 设置最大上传文件大小 --> ``` 在Controller中,同样可以使用`@RequestParam`接收文件: ```java @PostMapping("/upload") public String handleFileUpload(@RequestParam("file") MultipartFile file...
上传文件时要考虑安全性,包括防止文件覆盖、恶意文件上传(如脚本注入)、文件权限设置等。应验证文件类型、大小,并对文件名进行清理,避免特殊字符和路径遍历攻击。 9. **最佳实践** 使用流式处理文件,减少...
结合这两者,我们可以创建一个功能,允许用户通过Web界面上传文件并将其存储在FTP服务器上。 首先,我们需要在`mmall.properties`配置文件中设置FTP服务器的相关信息,包括主机地址、端口号、用户名、密码以及目标...
在SpringMVC框架中,文件上传和下载是常见的功能需求,尤其在开发Web应用程序时。本文将详细讲解如何实现SpringMVC中的单文件上传、多文件上传、文件列表显示以及文件下载。 首先,我们需要理解SpringMVC处理文件...
标题 "blog.rar_impossible5ts_java web_springmvc_博客" 暗示这是一个关于Java Web开发的项目,特别涉及SpringMVC框架,用于构建一个简单的个人博客平台。描述提到这个博客系统具备前后端功能,支持用户上传日记和...
这两种方法都是在Web应用中处理用户上传文件的常见方式,特别是当需要在后台处理文件且不刷新整个页面时,AJAX上传就显得尤为重要。 首先,我们来看**Spring MVC**。Spring MVC是Spring框架的一个模块,专门用于...
在创建用于上传文件的表单时,需要指定`enctype`属性为`multipart/form-data`。这是因为这种编码类型允许表单数据中包含二进制文件,如图片、文档等。例如: ```html 上传"/> ``` 这里的`/upload`是处理文件...
在Java Web开发中,Spring MVC是一个非常流行的框架,它提供了模型-视图-控制器(MVC)模式,用于构建高效、可维护的Web应用程序。在这个项目"java-springmvc图片上传"中,我们关注的核心是Spring MVC如何处理图片的...
在Spring MVC框架中,文件上传和下载是常见的需求,尤其在构建Web应用程序时。下面将详细阐述如何使用Spring MVC实现这些功能,以及如何添加文件压缩的特性。 首先,我们需要了解Spring MVC中的MultipartFile接口,...
这通常在`WebMvcConfigurerAdapter`的`configureMultipartSettings`方法中完成,设置最大上传文件大小等相关参数。 5. **控制器方法** 控制器中需要定义一个接收`MultipartFile[]`类型的参数的方法,用于接收上传...
在这个示例中,`@RequestParam("file") MultipartFile file`参数表示从请求中获取名为"file"的上传文件。如果文件不为空,代码会尝试读取文件内容并将其保存到服务器。如果在处理过程中出现异常,会返回错误信息。 ...
在实际应用中,要注意文件上传的安全性,防止恶意文件上传,比如通过限制文件类型、大小,以及对上传文件进行病毒扫描等。 8. **测试与部署** 使用eclipse的内置Tomcat服务器启动项目,访问创建的上传页面,上传...
在这个特定的项目"springmvc上传文件实时显示进度条"中,我们关注的是如何在文件上传过程中为用户展示进度信息,以提高用户体验。这个项目适用于那些需要处理大文件上传并希望提供反馈的Web应用。 首先,要实现文件...
`SpringMVC`作为Java后端的一个强大框架,提供了处理文件上传的能力。而`Ajax`技术则使得页面可以在不刷新的情况下与服务器进行交互,实现异步上传,极大地提升了用户体验。在本教程中,我们将探讨如何结合`...
在Spring MVC框架中,文件上传是一项常见的功能,用于允许用户通过Web应用程序上传文件。要实现这一功能,我们需要依赖一些特定的库和配置。本篇文章将详细介绍如何在Spring MVC中实现文件上传,并涉及到所需的jar包...