SpringMvc图片上传

本文介绍了一个基于 Spring MVC 的 Web 应用配置流程,包括 web.xml 的设置、Spring MVC DispatcherServlet 的配置以及 Spring MVC 的核心配置文件 mvc-contex.xml 的详细内容。此外,还提供了一个文件上传控制器的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置webxml

<!-- 监听spring上下文容器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

<!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:root-context.xml</param-value>
</context-param>

<!-- 配置Spring MVC DispatcherServlet -->
<servlet>
<servlet-name>MVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化参数 -->
<init-param>
<!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/mvc*.*
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>


<!-- 配置DispatcherServlet所需要拦截的 url -->
<servlet-mapping>
<servlet-name>MVC</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>


<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>


SpringMvc mvc-contex.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 加载Spring的全局配置文件 -->
<beans:import resource="root-context.xml" />

<!-- SpringMVC配置 -->

<!-- 通过component-scan 让Spring扫描org.swinglife.controller下的所有的类,让Spring的代码注解生效 -->
<context:component-scan base-package="org.swinglife.controller"></context:component-scan>

<!-- 配置SpringMVC的视图渲染器, 让其前缀为:/ 后缀为.jsp  将视图渲染到/page/<method返回值>.jsp中 -->
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/page/" p:suffix=".jsp">
</beans:bean>
<!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="UTF-8"
p:maxUploadSize="5400000"
p:uploadTempDir="fileUpload/temp"
>
</beans:bean>

</beans:beans>

第三写FileUploadController

@RequestMapping("fileUpload")
public String fileUpload(@RequestParam("file") MultipartFile file) {
// 判断文件是否为空
if (!file.isEmpty()) {
try {
System.out.println("卧槽卧槽卧槽");
// 文件保存路径
String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"
+ file.getOriginalFilename();
System.out.println("路径"+filePath);
// 转存文件
//file.transferTo(new File(filePath));
} catch (Exception e) {
e.printStackTrace();
}
}
// 重定向
return "redirect:/list.html";
}


第四 jsp页面 fileUpload.jsp

<form action="fileUpload.html" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="file">
<input type="submit" value="提交"> 
</form>







### 如何在Spring MVC中实现图片上传功能 为了实现在Spring MVC中的图片上传,需要完成几个主要部分的设置。这包括配置`CommonsMultipartResolver`来处理多部件请求以及创建控制器方法用于接收文件并保存到服务器。 #### 配置文件调整 在Spring项目的配置文件(如`spring-servlet.xml`)中加入如下代码片段以启用文件上传的支持: ```xml <!-- 文件上传配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置最大允许上传大小,默认单位为字节 (这里设定了10MB的最大限制) --> <property name="maxUploadSize" value="10485760"/> </bean> ``` 此段XML定义了一个名为`multipartResolver`的Bean实例,它负责解析HTTP POST请求中的二进制数据流,并将其转换成可以在应用程序内部操作的对象形式[^2]。 #### 控制器编写 接下来,在Java类里添加一个处理器函数用来接受客户端提交过来的照片资料。下面是一个简单的例子展示怎样通过表单字段获取图像文件并将之存储于指定路径下: ```java import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; @Controller public class FileUploadController { @RequestMapping(value = "/upload", method = RequestMethod.POST) public String uploadFile(@RequestParam("name") String name, @RequestParam("file") MultipartFile file, ModelMap model) { if (!file.isEmpty()) { try { byte[] bytes = file.getBytes(); // 创建目标目录结构 File dir = new File("D:/uploads/"); if (!dir.exists()) dir.mkdirs(); // 将接收到的数据写入磁盘上的实际位置 File serverFile = new File(dir.getAbsolutePath() + File.separator + name); try (OutputStream outputStream = new FileOutputStream(serverFile)) { outputStream.write(bytes); } model.addAttribute("message", "You successfully uploaded '" + name + "'"); return "success"; } catch (IOException e) { model.addAttribute("message", "Failed to upload '" + name + "' => " + e.getMessage()); return "error"; } } else { model.addAttribute("message", "Please select a file to upload."); return "index"; } } } ``` 上述代码展示了如何利用`@RequestParam`注解绑定来自HTML页面的输入参数至相应变量;同时借助`MultipartFile`接口读取上传的内容。一旦成功接收到有效负载,则会尝试按照给定的名字存放到本地硬盘上预先设定好的地方。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值