Spring MVC 上传文件
-
在
ssm
整合项目的基础上 配置静态文件的访问问题【视图处理器拦截所有的访问的资源只有 jsp 后缀才可以通过】在
springmvc.xml
中 视图配置解析器下面加入:<mvc:default-servlet-handler/>
,开启静态资源的访问 -
在
web.xml
里面配置的前端控制器DispatcherServlet
里面配置上传文件的临时目录:<!-- 配置 DisPatchServlet 分发控制器 拦截请求到这个servlet 里面去做分发 --> <servlet> <servlet-name>springMvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <!-- 配置文件上传的临时目录和大小控制 --> <multipart-config> <!-- 临时目录不可缺省 --> <location>D:\kaifamiao\upload</location> <max-file-size>2097152</max-file-size> <max-request-size>4194304</max-request-size> </multipart-config> </servlet> <servlet-mapping> <servlet-name>springMvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
-
创建页面:
upfile.jsp
- 注意提交跳转的控制器
- 注意:提交方式后面的
enctype
属性 ,传输多媒体文件固定写法 - 后面的
<img>
标签是数据上传成功回显使用 - 注意:回显路径的写法和动态获取上传文件名的写法
${upFileName}
和控制器要对应
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="${pageContext.request.contextPath}/goods/upFile" method="post" enctype="multipart/form-data"> <input type="file" name="upFile"> <input type="submit" value="上传"> </form> <img alt="" src="${pageContext.request.contextPath}/uploads/${upFileName}"> </body> </html>
-
控制器的写法【利用
UUID
重新给名字并保存】-
MultipartFile
接口继承了InputStreamSource
专门用来处理文件上传的-
getOriginalFilename()
:取得上传的文件名 -
//getName() 返回参数的名称 String getName(); //获取源文件的昵称 String getOriginalFilename(); //getContentType() 返回文件的内容类型 String getContentType(); //isEmpty() 判断是否为空,或者上传的文件是否有内容 boolean isEmpty(); //getSize() 返回文件大小 以字节为单位 long getSize(); //getBytes() 将文件内容转化成一个byte[] 返回 byte[] getBytes() throws IOException; //getInputStream() 返回InputStream读取文件的内容 InputStream getInputStream() throws IOException; default Resource getResource() { return new MultipartFileResource(this); } //transferTo(File dest) 用来把 MultipartFile 转换换成 File void transferTo(File var1) throws IOException, IllegalStateException; default void transferTo(Path dest) throws IOException, IllegalStateException { FileCopyUtils.copy(this.getInputStream(), Files.newOutputStream(dest)); } }
-
/** * 上传文件测试 * 1.取得上传文件名 2.修改文件名为uuid随机32位串并不能更改后缀 3.保存到项目发布路径的uploads下面 * 4.判断路径是否存在 不存在创建 5.建立要保存的文件对象 并保存文件 6.转发保存文件到页面显示 * @param upFile * @return */ @RequestMapping("/upFile") public String upFile(MultipartFile upFile, HttpServletRequest request, Model model) { if (upFile != null) { String fileName = upFile.getOriginalFilename(); String newFileName = UUID.randomUUID().toString()+fileName.substring(fileName.lastIndexOf(".")); @SuppressWarnings("deprecation") String savePath = request.getRealPath("/")+File.separator+"uploads"+File.separator; File file = new File(savePath); if (!file.exists()) { file.mkdirs(); } try { File transferPath = new File(savePath, newFileName); upFile.transferTo(transferPath); } catch (IllegalStateException | IOException e) { e.printStackTrace(); } model.addAttribute("upFileName", newFileName); } return "goods/upfile"; }
-
-
多个文件的写法,要么组件名字不一致一个一个自动注入,要么写成一个的,和多选框类似用数组接受循环操作
Eclipse通过 Git 拉取远程项目
-
File —> import
-
搜索 git ----> 选择 Projects from Git ----> 下一步【也可以一开始就选只能import 最后一步就不用自己去选导入什么类型的了】
-
-
选择 Clone URL —> 下一步
-
拿到 gitee 上项目所在仓库的 URL
-
复制 URL 到 eclipse —> 粘贴URL —>下一步
-
下一步
-
选择一下本地地址 —> 下一步
-
绿条走完 —> 按自己的情况选择 最后完成就好了【刚开始可以选择智能导入的】
Eclipse对项目 上传和拉取以及分支控制合并等操作
![image-20211202001743212](https://i-blog.csdnimg.cn/blog_migrate/60ec33e4958db217301386fa1ddfd665.png)
Eclipse对项目 上传和拉取以及分支控制合并等操作
![image-20211202005441019](https://i-blog.csdnimg.cn/blog_migrate/395b500a064a2755c5b0732c0c5e7734.png)