2021-01-31

SpringMVC 通过commons-fileupload实现文件上传

目录
  • 配置
    • web.
    • SpringMVC配置文件 applicationContext.
  • 文件上传 Controller
    • 上传实现一
    • 上传实现二
  • 测试
  • 依赖

配置

上传文件的核心配置类:CommonsMultipartResolver,注意id="multipartResolver"不要写错

<?


文件上传 Controller

上传实现一

package com.pro.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.commons.CommonsMultipartFile;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;@RestControllerpublic class FileController { /*  * 采用file.transferTo 来保存上传的文件  */ @RequestMapping("/upload2") public Map fileUpload2(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request) throws IOException {  //上传路径保存设置  String path = request.getServletContext().getRealPath("/upload");  File realPath = new File(path);  if (!realPath.exists()){   realPath.mkdir();  }  //上传文件地址  System.out.println("上传文件保存地址 --> "+realPath);  //通过CommonsMultipartFile的方法直接写文件(注意这个时候)  file.transferTo(new File(realPath +"/"+ file.getOriginalFilename()));  Map<Object, Object> hashMap = new HashMap<>();  hashMap.put("code", 0);  hashMap.put("msg", "上传成功");  return hashMap; }}

上传实现二

这里的文件名称没有使用 UUID组合名称 为了方便测试

package com.pro.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.commons.CommonsMultipartFile;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;@RestControllerpublic class FileController { // @RequestParam("file") 将 name=file 控件得到的文件封装成 CommonsMultipartFile 对象 // 批量上传把 CommonsMultipartFile 改为数组即可 @RequestMapping("/upload") public String upload(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request) throws IOException {  // 获取文件名称  String uploadFileName = file.getOriginalFilename();  // 如果文件名为空, 直接返回首页  if ("".equals(uploadFileName)) {   return "file upload error";  }  System.out.println("上传文件名 --> " + uploadFileName);  // 设置文件的保存位置  String path = request.getServletContext().getRealPath("/upload");  // 判断路径是否存在  File realPath = new File(path);  if (!realPath.exists()) {   // 如果不存在就创建   realPath.mkdir();  }  System.out.println("文件保存路径 --> " + realPath);  // 获取文件输入流  InputStream is = file.getInputStream();  // 获取文件输出流  FileOutputStream os = new FileOutputStream(new File(realPath, uploadFileName));  // 缓冲区读写文件  byte[] buffer = new byte[1024];  int len;  while ((len = is.read(buffer)) != -1) {   os.write(buffer, 0, len);   os.flush();  }  // 关闭流  os.close();  is.close();  return "file upload success"; }}

测试

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>$Title$</title> </head> <body> <form enctype="multipart/form-data" action="${pageContext.request.contextPath}/upload2" method="post">  <input type="file" name="file">  <input type="submit" value="上传实现一"> </form>   <form enctype="multipart/form-data" action="${pageContext.request.contextPath}/upload" method="post">  <input type="file" name="file">  <input type="submit" value="上传实现二"> </form> </body></html>

依赖

核心依赖就是 commons-fileupload

<!--导入依赖--><dependencies> <!--单元测试--> <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.13</version> </dependency> <!--spring--> <dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-webmvc</artifactId>  <version>5.2.0.RELEASE</version> </dependency> <!--文件上传--> <dependency>  <groupId>commons-fileupload</groupId>  <artifactId>commons-fileupload</artifactId>  <version>1.3.3</version> </dependency> <!--servlet-api导入高版本的--> <dependency>  <groupId>javax.servlet</groupId>  <artifactId>javax.servlet-api</artifactId>  <version>4.0.1</version> </dependency> <!--jsp--> <dependency>  <groupId>javax.servlet.jsp</groupId>  <artifactId>jsp-api</artifactId>  <version>2.2</version> </dependency> <!--jstl表达式--> <dependency>  <groupId>javax.servlet</groupId>  <artifactId>jstl</artifactId>  <version>1.2</version> </dependency></dependencies>








原文转载:http://www.shaoqun.com/a/521227.html

跨境电商:https://www.ikjzd.com/

淘粉吧官网:https://www.ikjzd.com/w/1725.html

灰色清关:https://www.ikjzd.com/w/1409


目录配置web.SpringMVC配置文件applicationContext.文件上传Controller上传实现一上传实现二测试依赖配置<?上传文件的核心配置类:CommonsMultipartResolver,注意id="multipartResolver"不要写错<?文件上传Controller上传实现一packagecom.pro.controller;i
bsci 认证:bsci 认证
易联通:易联通
Shopdeca:Shopdeca
口述:男友逼我做处女膜检查 否则分手情感情侣暧昧:口述:男友逼我做处女膜检查 否则分手情感情侣暧昧
为避免国内包裹积压 WishPost中邮渠道仅保留7个仓库:为避免国内包裹积压 WishPost中邮渠道仅保留7个仓库

No comments:

Post a Comment