SpringMVC实现文件的上传(CommonsMultipartResolver和StanderServletMultipartResolver)

     一定要足够优秀才能堵住悠悠众口。

b14fbd0383c74866b141a8322afde37c.jpg

 

文件上传功能在SpringMVC中有两种方法(两种不同的处理器)

2df7c8607da74692b9cbedeb95edd23c.png

 这篇文章我们将通过这两种方法来实现文件上传功能

1:CommonsMultipartResolver

创建一个新的Maven项目并在项目中进行基础的环境配置

Maven项目基础配置,如果不同可以参考一下

一:在pom.xml中导入我们即将用到的依赖

        commons-fileuploadcommons-fileupload1.4

二:创建网页,实现前端出现页面

注意:这里创建的是动态网页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

Title


三:创建SpringMVC框架的控制器

package fileupload_demo1;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;@Controller
public class CT1 {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("/yyyy/MM/dd/"); //创建日期,并标注时间显示格式@GetMapping("/upload")public String play1(){return "hh";}@RequestMapping("/play")@ResponseBodypublic String play1(MultipartFile file, HttpServletRequest req) throws IOException {String format = simpleDateFormat.format(new Date());  //获取今天的日期String realpath = req.getServletContext().getRealPath("/img") +format; //获取Tomcat中的临时储存文件File folder = new File(realpath);if(!folder.exists()){   //检查目录是否存在folder.mkdirs();    //目录不存在进行创建}String oldname = file.getOriginalFilename(); //得到上传时的文件名String name = UUID.randomUUID().toString()+oldname.substring(oldname.lastIndexOf(".")); //UUID.randomUUID().toString():Java中自动生成主键的方法,机器中生成的一串生成数字file.transferTo(new File(folder,name)); //将前端传来的数据保存指定名字保存在指定文件夹下String url = req.getScheme()+ "://"+req.getServerName() +":"+req.getServerPort() +"/img" +format +name;return url;//http://localhost:8080/img/2022/11/13/8d3910d1-2a7c-47ce-8251-3cc4eeaf0bc4.jpeg}}

注意:下面标注了代码获取的结果

c7e57f38f15648e2903bf070bce07685.png

 四:配置SpringMVC




   

执行项目:

前端网页:

0893f00d25ef4ecb88d7e0833eb3addf.png

 点击提交,返回图片url

1df96c4c39744615917a806dc7b1bc70.png

 最终结果:

ba53f451a60543008c13a6551ab9517b.png

 2:StanderServletMultipartResolver(经常被使用)

这种方法的配置基本上与第一种方法相同,没有很大的区别

区别一:将SpringMVC的配置文件中文件上传的类进行更换


区别二:将上传文件的参数配置放在web.xml中


contextConfigLocationclasspath:spring.xmlorg.springframework.web.context.ContextLoaderListenerspringmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:SpringMVC.xml
104857610485764096springmvc/encodingorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceRequestEncodingtrueforceResponseEncodingtrueencoding/*

其他的内容不变实现的功能是相同的结果

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部