SpringMVC实现文件上传

1.SpringMVC传统方式文件上传

  1. SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的name属性名称相同。

  2. 代码如下

    /**
    * SpringMVC方式的文件上传
    *
    * @param request
    * @return
    * @throws Exception
    */
    @RequestMapping(value="/fileupload2")
    public String fileupload2(HttpServletRequest request,MultipartFile upload) throws Exception {
    	System.out.println("SpringMVC方式的文件上传...");
    	// 先获取到要上传的文件目录
    	String path = request.getSession().getServletContext().getRealPath("/uploads");
    	// 创建File对象,一会向该路径下上传文件
    	File file = new File(path);
    	// 判断路径是否存在,如果不存在,创建该路径
    	if(!file.exists()) {
    	file.mkdirs();
    	}
    	// 获取到上传文件的名称
    	String filename = upload.getOriginalFilename();
    	String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
    	// 把文件的名称唯一化
    	filename = uuid+"_"+filename;
    	// 上传文件
    	upload.transferTo(new File(file,filename));
    	return "success";
    }
    
  3. 配置文件解析器对象

    <!-- 配置文件解析器对象,要求id名称必须是multipartResolver -->
    <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    	<property name="maxUploadSize" value="10485760"/>
    </bean>
    

2. SpringMVC跨服务器方式文件上传

  1. 搭建图片服务器
    1. 根据文档配置tomcat9的服务器,现在是2个服务器
    2. 导入资料中day02_springmvc5_02image项目,作为图片服务器使用
  2. 实现SpringMVC跨服务器方式文件上传
    1. 导入开发需要的jar包
      <dependency>
      	<groupId>com.sun.jersey</groupId>
      	<artifactId>jersey-core</artifactId>
      	<version>1.18.1</version>
      </dependency>
      <dependency>
      	<groupId>com.sun.jersey</groupId>
      	<artifactId>jersey-client</artifactId>
      	<version>1.18.1</version>
      </dependency>
      
    2. 编写文件上传的JSP页面
      	<h3>跨服务器的文件上传</h3>
      	<form action="user/fileupload3" method="post" enctype="multipart/form-data">
      		选择文件:<input type="file" name="upload"/><br/>
      		<input type="submit" value="上传文件"/>
      	</form>
      	```
      
    3. 编写控制器
      @RequestMapping(value="/fileupload3")
      public String fileupload3(MultipartFile upload) throws Exception {
      	System.out.println("SpringMVC跨服务器方式的文件上传...");
      	// 定义图片服务器的请求路径
      	String path = "http://localhost:9090/day02_springmvc5_02image/uploads/";
      	// 获取到上传文件的名称
      	String filename = upload.getOriginalFilename();
      	String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
      	// 把文件的名称唯一化
      	filename = uuid+"_"+filename;
      	// 向图片服务器上传文件
      	// 创建客户端对象
      	Client client = Client.create();
      	// 连接图片服务器
      	WebResource webResource = client.resource(path+filename);
      	// 上传文件
      	webResource.put(upload.getBytes());
      	return "success";
      }
      
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring MVC中实现文件上传,你需要进行以下几个步骤: 1. 引入依赖:在项目的pom.xml文件中,添加对Spring MVC和文件上传组件的依赖。 2. 在前端编写一个包含文件上传功能的form表单:在HTML页面中,使用form表单标签,并设置属性enctype="multipart/form-data",并添加一个type为file的input标签,用于选择要上传的文件。 3. 在Spring MVC的配置文件中配置文件上传器:在Spring MVC的配置文件(通常是一个XML文件)中,添加一个bean,其id为multipartResolver,类为org.springframework.web.multipart.commons.CommonsMultipartResolver。这是Spring提供的一个文件上传解析器。 4. 在Controller中处理文件上传:在Spring MVC的Controller中,添加一个方法用于处理文件上传的请求。该方法需要添加一个参数,用于接收上传的文件。在方法中,你可以通过MultipartFile对象来访问上传的文件,并执行相应的操作。 下面是一个示例代码,展示了如何在Spring MVC中实现文件上传: ```java @Controller public class FileUploadController { @RequestMapping(value = "/upload", method = RequestMethod.POST) public String handleFileUpload(@RequestParam("file") MultipartFile file) { // 处理文件上传的逻辑 if (!file.isEmpty()) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); // 进行处理... return "success"; } else { return "error"; } } } ``` 请注意,上述代码中的"/upload"是文件上传的请求路径,你可以根据自己的需要进行修改。 总结一下,要在Spring MVC中实现文件上传,你需要引入依赖、编写前端form表单、配置文件上传器,并在Controller中处理文件上传的请求。希望这些信息对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringMvc上传文件(详细)](https://blog.csdn.net/weixin_55519875/article/details/128096289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值