SpringMVC实现文件的上传(CommonsMultipartResolver和StanderServletMultipartResolver)
一定要足够优秀才能堵住悠悠众口。
文件上传功能在SpringMVC中有两种方法(两种不同的处理器)
这篇文章我们将通过这两种方法来实现文件上传功能
1:CommonsMultipartResolver
创建一个新的Maven项目并在项目中进行基础的环境配置
Maven项目基础配置,如果不同可以参考一下
一:在pom.xml中导入我们即将用到的依赖
commons-fileupload commons-fileupload 1.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}}
注意:下面标注了代码获取的结果

四:配置SpringMVC
执行项目:
前端网页:

点击提交,返回图片url

最终结果:

2:StanderServletMultipartResolver(经常被使用)
这种方法的配置基本上与第一种方法相同,没有很大的区别
区别一:将SpringMVC的配置文件中文件上传的类进行更换
区别二:将上传文件的参数配置放在web.xml中
contextConfigLocation classpath:spring.xml org.springframework.web.context.ContextLoaderListener springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:SpringMVC.xml
1048576 1048576 4096 springmvc / encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceRequestEncoding true forceResponseEncoding true encoding /*
其他的内容不变实现的功能是相同的结果
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!


