1.单个文件上传
在Controller的add方法中加入:
@RequestMapping(value="/add",method=RequestMethod.POST)
public String add(@Validated User user, BindingResult result, MultipartFile attach){
String realpath=req.getSession().getServletContext().getRealPath("/resources/upload");
File f=new File(realpath+"/"+attach.getOriginalFilename());
try {
FileUtils.copyInputStreamToFile(attach.getInputStream(),f );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
users.put(user.getUsername(), user);
return "redirect:/user/users";
}
这里的MultipartFile就包含了上传文件的内容信息。
在add.jsp页面中加入文件上传:
<body>
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
用户名称:<sf:input path="username"/><sf:errors path="username"/><br/>
用户密码: <sf:input path="password"/><sf:errors path="password"/><br/>
用户昵称: <sf:input path="nickname"/> <br/>
用户邮箱: <sf:input path="email"/><sf:errors path="email"/><br/>
附件:<input type="file" name="attach"/><br/>
<input type="submit" value="添加用户"/>
</sf:form>
</body>
这里直接上传文件会报错:
Expected MultipartHttpServletRequest: is a MultipartResolver configured?
因此我们需要在hello-servlet.xml中配置这个文件解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
这里还没完, 打开CommonsMultipartResolver,可以看到
/**
* Initialize the underlying {@code org.apache.commons.fileupload.servlet.ServletFileUpload}
* instance. Can be overridden to use a custom subclass, e.g. for testing purposes.
* @param fileItemFactory the Commons FileItemFactory to use
* @return the new ServletFileUpload instance
*/
@Override
protected FileUpload newFileUpload(FileItemFactory fileItemFactory) {
return new ServletFileUpload(fileItemFactory);
}
这里引用了commons-fileupload里面的类,因此我们还要导入commons-fileupload
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
2.多个文件上传
多文件上传的时候,首先要在add.jsp中加入多个file。
注意这里把attach改成了attachs
<body>
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
用户名称:<sf:input path="username"/><sf:errors path="username"/><br/>
用户密码: <sf:input path="password"/><sf:errors path="password"/><br/>
用户昵称: <sf:input path="nickname"/> <br/>
用户邮箱: <sf:input path="email"/><sf:errors path="email"/><br/>
附件:<input type="file" name="attachs"/><br/>
附件:<input type="file" name="attachs"/><br/>
附件:<input type="file" name="attachs"/><br/>
<input type="submit" value="添加用户"/>
</sf:form>
</body>
接下来修改Controller里的add方法:
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Validated User user, BindingResult result,
@RequestParam("attachs") MultipartFile[] attachs, HttpServletRequest req) {
for (MultipartFile attach : attachs) {
String realpath = req.getSession().getServletContext()
.getRealPath("/resources/upload");
File f = new File(realpath + "/" + attach.getOriginalFilename());
try {
FileUtils.copyInputStreamToFile(attach.getInputStream(), f);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
users.put(user.getUsername(), user);
return "redirect:/user/users";
}
这里做了两个改动,一个是把MultipartFile attach改成了
MultipartFile[] attachs,
另一个是在前面加入了 @RequestParam("attachs");这个注释可以将前台的parameter的名称和这里的参数捆绑起来:
/**
* The name of the request parameter to bind to.
*/
String value() default "";)
分享到:
相关推荐
这篇博客"springmvc入门基础之文件上传"显然会讲解如何在Spring MVC应用中实现这一功能。我们将探讨相关的关键知识点,包括Spring MVC的MultipartFile接口、前端表单处理以及后台控制器的配置。 首先,`...
在“SpringMVC学习(一)——SpringMVC入门小程序”中,我们首先会接触到SpringMVC的基本概念。这通常包括以下几个核心组件: 1. **DispatcherServlet**:这是SpringMVC的前端控制器,负责接收HTTP请求,并根据配置...
SpringMVC入门** SpringMVC作为Spring框架的一部分,提供了处理HTTP请求、数据绑定、模型视图解析等功能。它的核心组件包括DispatcherServlet、Controller、Model、View和ViewResolver等。在处理文件上传时,...
SpringMVC支持文件上传,可以集成Apache Commons FileUpload和Apache Commons IO库来处理文件上传逻辑。同时,AjaxFileupload组件可以用来实现文件上传功能,实现异步文件上传而不刷新页面。 电子邮件的发送功能在...
通过这个SpringMVC入门教程,你将学习到如何搭建SpringMVC环境,创建基本的Controller,处理HTTP请求,以及更高级的功能,如数据绑定、文件上传下载、异常处理和RESTful API设计。这将为你在实际项目中运用SpringMVC...
通过这个SpringMVC入门项目,你可以学习到如何搭建SpringMVC环境,编写Controller,配置视图解析,处理表单数据,以及如何实现简单的CRUD操作。随着对SpringMVC的深入理解,你将能够构建更加复杂的Web应用。在实践中...
在实际项目中,我们还可以涉及更多复杂功能,如表单数据绑定、异常处理、国际化、文件上传下载等。同时,结合 Spring Boot,可以进一步简化配置和启动流程,使开发更加高效。学习 SpringMVC 不仅要理解基础概念,还...
全注解开发是 SpringMVC 中的一种流行模式,它消除了传统的 XML 配置文件,转而使用 Java 注解来配置组件和服务。例如,`@Controller` 注解标记控制器类,`@RequestMapping` 注解映射 HTTP 请求,`@Autowired` 注解...
在这个入门例子中,我们将探讨如何使用SpringMVC的注解来实现用户信息的保存和文件上传功能。 首先,让我们了解SpringMVC的核心组件: 1. **DispatcherServlet**:它是SpringMVC的前端控制器,负责接收HTTP请求,...
7. **上传文件与下载支持**:Spring MVC内置了对文件上传的支持,可以方便地处理multipart类型的请求,同时也可以支持文件的下载操作。 8. **国际化与主题支持**:Spring MVC提供本地化和主题功能,可以根据用户的...
每个Demo都对应一个具体的功能点,如简单的HTTP请求处理、表单数据绑定、文件上传下载、分页查询等。通过实践这些例子,你可以更好地理解SpringMVC的工作原理和最佳实践,从而能够独立地创建和维护自己的SpringMVC ...
Spring MVC 是一个基于 Java ...随着学习的深入,你将接触到更多高级特性,如拦截器、模型属性绑定、数据验证、文件上传下载等。Spring MVC 提供了丰富的功能和良好的可扩展性,是开发企业级 Java Web 应用的强大工具。
**SpringMVC快速入门示例** SpringMVC是Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了一种简单而强大的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不必过于...
总的来说,这个入门实例旨在帮助初学者理解如何在没有使用注解的情况下,通过XML配置文件集成SpringMVC、Spring和Hibernate,完成一个简单的Web应用。虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解...
本指南提供了 SpringMVC 的核心思想、框架特点、入门示例、参数传递、标签介绍、拦截器、类型转换、JSON 格式数据的输入和输出、文件上传、国际化和本地化、验证等方面的知识点,旨在帮助开发者快速掌握 SpringMVC ...
5. **文件上传功能**:在SpringMVC中,文件上传可以通过`CommonsMultipartResolver`实现。用户选择文件后,文件会被转化为MultipartFile对象,Controller接收这个对象,然后将其存储到服务器的指定位置。这个过程...
#### 三、SpringMVC入门程序详解 入门程序是理解SpringMVC工作原理的重要途径,主要目的是熟悉SpringMVC的基本流程及其各个组件的作用。 - **非注解的处理器映射器和处理器适配器**:这是SpringMVC早期版本中使用的...
本项目提供了一个Controller demo,是SpringMVC入门学习的理想参考资料。 在SpringMVC中,Controller扮演着核心角色,它负责接收HTTP请求,处理业务逻辑,并将结果转发给视图进行渲染。Controller类通常会使用`@...
- **文件上传**:支持多文件上传功能。 - **JSON数据交互**:支持通过JSON格式进行数据交互。 - **RESTful支持**:支持RESTful风格的URL。 - **拦截器**:提供了一种机制可以在请求被处理之前或之后做一些预处理或后...
- SpringMVC提供了MultipartFile接口处理文件上传,需要配置CommonsMultipartResolver解析器。 - 文件上传时,Controller方法需要接收MultipartFile类型的参数,并能处理上传错误和文件大小限制。 10. **异常处理...