Controller<span style="white-space:pre"> </span>
package com.hmx.controller; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartResolver; @Controller //根目录 @RequestMapping("/file") public class FileLoad { //优化版上传文件! @RequestMapping("/upload2") //RequestParam(jsp里的 name) 页面将所有信息都传送request表单, public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{ //定义一个解析器 将springMVC上下文解析到 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); //用解析器解析request里面的数据,并判断是否为Multipart类型的数据 if(multipartResolver.isMultipart(request)){ //request如果是Multipart类型的数据,将reques转化成MultipartHttpServletRequest类型 MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request; //拿文件 通过迭代器Iterator一个一个拿文件 Iterator<String> iter = multiRequest.getFileNames(); while(iter.hasNext()){ //根据迭代器拿到的文件名称,传给file MultipartFile file = multiRequest.getFile((String)iter.next()); //开始写文件 if( file!=null){ //上传后的文件名称 String fileName="上传后的文件 :"+file.getOriginalFilename(); //上传后的文件位置 String path="D:/"+fileName; File localFile = new File(path); //将上传文件(file)写到指点文件上(localFile) file.transferTo(localFile); } } } return "/success"; } @RequestMapping("/upload") //RequestParam(jsp里的 name) public String addFile(@RequestParam("file")CommonsMultipartFile file, HttpServletRequest request) throws IOException{ System.out.println("文件上传 :"+file.getOriginalFilename()); //上传文件,判断是否有文件 if(!file.isEmpty()){ try { //输出流 文件上传后保存的地方 FileOutputStream os=new FileOutputStream("D:/"+file.getOriginalFilename()); //输入流 InputStream in=file.getInputStream(); //读文件(一个一个字节读) int b=0; while((b=in.read())!=-1){ os.write(b); } //关闭流 os.flush(); os.close(); in.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return "/success"; } @RequestMapping("/toload") public String toLoad(){ return "upload"; } }
springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 启动SpringMVC的注解功能--> <mvc:annotation-driven/> <!-- 加载包中的controller包(controller类所在的包名) 加载扫描注解包 --> <context:component-scan base-package="com.hmx.controller"/> <!-- 静态资源访问 (不拦截images文件夹下的文件)--> <!-- 不拦截静态资源 <mvc:default-servlet-handler /> --> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/js/" mapping="/js/**"/> <!-- 多请求处理控制器 --> <bean id="paramMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <!-- 自己定义的配置标识action,当访问页地址栏输入访问名加上"?action=方法名"--> <property name="paramName" value="action"> </property> </bean> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 文件上传 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <property name="maxUploadSize" value="10485760000"></property> <property name="maxInMemorySize" value="40960"></property> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springMVC4</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/config/springMVC-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
uoload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form name="userForm" action="/springMVC4/file/upload2" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="file"> //可以实现多文件上传
选择文件:<input type="file" name="file2">
选择文件:<input type="file" name="file3">
<div><input type="submit" value="提交"> </div> </form> </body> </html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 上传文件成功! </body> </html>
相关推荐
这里我们探讨的主题是“分页拦截器文件上传下载springmvc”,这涉及到几个关键知识点:分页、拦截器、Spring MVC以及文件操作。 首先,让我们了解**分页**。在Web应用中,通常会遇到数据量庞大的情况,一次性加载...
本示例代码主要展示了如何实现Spring MVC的文件上传和查看,并提供了将文件存储在静态资源区和服务器指定目录两种方式。以下是详细的步骤和知识点: 1. **配置Spring MVC文件上传解析器**: 在`mvc-servlet.xml`...
在实际应用中,还需要考虑文件上传的安全性、性能优化、错误处理和日志记录等问题。例如,对文件大小进行限制以防止DoS攻击,使用异步处理以提高上传速度,以及使用事务管理确保文件上传的原子性等。 总之,...
- **CommonsMultipartFile**:在 Spring MVC 中,我们通常使用 Apache Commons FileUpload 库来处理多部分文件上传。`CommonsMultipartFile` 是 Spring 提供的一个包装类,它封装了 FileUpload 库的上传文件对象。 ...
3. **文件上传与下载**:使用Apache Commons FileUpload或Spring MVC的MultiPartResolver处理文件上传,同时提供文件下载接口,支持断点续传和预览功能。 4. **文件检索**:通过Lucene或Elasticsearch等全文搜索...
Spring MVC的设计理念是模型-视图-控制器(MVC)模式,它将应用程序逻辑、用户界面和数据访问分离开来,提高了代码的可维护性和可测试性。下面将详细阐述Spring MVC的搭建过程及其核心组件。 一、Spring MVC的搭建...
在SpringMVC中,文件上传通常借助于CommonsMultipartResolver解析器来处理。用户提交的表单包含文件字段,服务器端接收到请求后,解析请求体中的多部分数据,将文件保存到指定的目录。需要注意文件大小限制、文件...
9. **上传下载处理**:SpringMVC提供便捷的文件上传和下载支持,通过MultipartFile接口处理文件上传,通过StreamingResponseBody处理大文件下载。 10. **异步处理**:SpringMVC支持异步处理,通过@Async注解可以在...
记录文件操作的日志,便于追踪和排查问题。 总的来说,Spring MVC 3.2提供了一套完善的文件上传下载解决方案,通过理解HTTP协议、MultipartFile接口以及Spring MVC的处理机制,开发者可以轻松地在应用中实现这些...
6. **优化**:为了提高性能,可以使用异步处理文件上传和下载,利用Spring MVC的AsyncController或者Servlet 3.0的异步处理特性。另外,对于大文件操作,可以考虑分块上传和下载。 7. **实际应用场景**:这些功能...
7. **AspectJ**: SpringAOP(面向切面编程)依赖于 AspectJ,它允许我们在不修改代码的情况下添加额外的行为,如日志记录、事务管理等。 8. **Hibernate 或 MyBatis**: 这些是常用的持久层框架,SpringMVC 可以与...
虽然标题和描述没有明确提到文件操作,但 SpringMVC 支持文件上传和下载功能。你可以通过 `MultipartFile` 类处理上传的文件,通过 ResponseEntity 或 StreamingResponseBody 处理文件下载。 8. **异常处理**: ...
1. 文件存储策略:为了提高性能和可扩展性,可以考虑使用分布式文件系统(如HDFS)、对象存储服务(如AWS S3或阿里云OSS)或本地文件系统结合数据库记录文件元信息。 2. 异步处理:对于大文件上传或下载,可以使用...
使用MultipartFile处理文件上传,通过StreamingResponseBody或OutputStream控制文件下载,SpringMVC提供了便捷的文件操作API。 9. **RESTful支持** SpringMVC通过HTTP方法(GET、POST、PUT、DELETE等)和@...
10. **上传下载**:SpringMVC提供了处理文件上传和下载的功能,通过MultipartFile接口处理文件上传,OutputStream或InputStream处理文件下载。 11. **RESTful风格**:SpringMVC支持创建RESTful Web服务,利用@...
SpringMVC提供了便捷的文件上传和下载支持,使用MultipartFile接口处理文件上传,通过ResponseEntity或StreamingResponseBody处理大文件下载。 9. **RESTful支持** SpringMVC 3.1加强了对RESTful风格的支持,允许...
该插件支持多浏览器兼容,提供了丰富的功能和自定义选项,使得文件上传体验更加友好。下面将详细阐述plUpload在Spring MVC中的应用及其相关知识点。 一、plUpload简介 plUpload是一款基于JavaScript的多浏览器文件...
例如,构建RESTful API、处理文件上传下载、实现分页和排序功能,以及进行性能优化等。通过实践,我们可以更好地理解和掌握SpringMVC的灵活性和强大功能。 总的来说,深入学习SpringMVC源码能够提升我们的技术水平...
实现文件上传功能,可以使用SpringMVC的MultipartFile接口。在Controller中定义接收文件的接口,将文件保存到服务器,同时更新数据库记录。 9. **测试** 使用JUnit或其他测试工具,编写测试用例,验证CRUD操作和...
总的来说,SSM框架提供了完善的文件上传支持,通过合理的配置和代码编写,可以实现高效、安全的文件上传功能。在实际开发中,根据项目需求和团队规范,可能还需要考虑性能优化、日志记录、异步处理等方面的问题,以...