最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

SpringMVC文件上传的方法介绍(代码)

来源:动视网 责编:小采 时间:2020-11-27 19:27:05
文档

SpringMVC文件上传的方法介绍(代码)

SpringMVC文件上传的方法介绍(代码):本篇文章给大家带来的内容是关于SpringMVC文件上传的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。SpringMVC为文件上传提供了直接的支持,这种支持是用即插即用的MultipartResolver实现的。SpringMVC使用Ap
推荐度:
导读SpringMVC文件上传的方法介绍(代码):本篇文章给大家带来的内容是关于SpringMVC文件上传的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。SpringMVC为文件上传提供了直接的支持,这种支持是用即插即用的MultipartResolver实现的。SpringMVC使用Ap


本篇文章给大家带来的内容是关于SpringMVC文件上传的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

SpringMVC为文件上传提供了直接的支持,这种支持是用即插即用的MultipartResolver实现的。SpringMVC使用Apache Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。因此,SpringMVC的文件上传还需要依赖Apache Commons FileUpload的组件。

1. 添加pom依赖

 <dependency>
 <groupId>commons-io</groupId>
 <artifactId>commons-io</artifactId>
 <version>2.3</version>
 </dependency>
 <dependency>
 <groupId>commons-fileupload</groupId>
 <artifactId>commons-fileupload</artifactId>
 <version>1.3.2</version>
 </dependency>

2. 配置文件上传bean

在spring mvc配置文件中增加一个文件上传bean。

 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <property name="defaultEncoding" value="UTF-8" />
 </bean>

3.文件上传

文件上传是项目开发中最常见的功能。为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器。

上传文件界面:upload_form.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>文件上传</title>
</head>
<body>

<!-- 上传单个对象 注意表单的method属性设为post,enctype属性设为multipart/form-data -->
<form method="POST" action="/SpringMVCDemo1/upload" enctype="multipart/form-data">
 <input type="file" name="file" /><br/><br/>
 <input type="submit" value="上传" />
</form>

<!-- 上传多个对象 注意表单的method属性设为post,enctype属性设为multipart/form-data -->
<form method="POST" action="/SpringMVCDemo1/uploadMultiFiles" enctype="multipart/form-data">
 <p>文件1:<input type="file" name="file" /></p>
 <p>文件2:<input type="file" name="file" /></p>
 <p>文件3:<input type="file" name="file" /></p>
 <!-- 同时传递其他业务字段 -->
 <p>用户名:<input type="text" name="userName" /></p>
 <p>密码:<input type="password" name="password" /></p>
 <p><input type="submit" value="上传" /></p>
</form>
</body>
</html>

上传结果返回界面:upload_result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <h2>上传
结果为:${message}</h2> </body> </html>

注意:要提前创建好存储文件的文件夹,比如我的路径为:"D:staticResourcesTestimgupload"。

FileController.java

@Controller
@RequestMapping("/SpringMVCDemo1")
public class FileController {
 /**
 * 跳转到上传页面
 * @GetMapping 是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
 */
 @GetMapping("/gotoUploadForm")
 public String index() {
 return "/upload_form.jsp";
 }

 /**
 * 上传单个文件
 * 通过MultipartFile读取文件信息,如果文件为空跳转到结果页并给出提示;
 * 如果不为空读取文件流并写入到指定目录,最后将结果展示到页面
 * @param multipartFile
 * @PostMapping 是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
 */
 @PostMapping("/upload")
 public String uploadSingleFile(@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request){
 if (multipartFile.isEmpty()){
 request.setAttribute("message", "Please select a file to upload '");
 return "/upload_result.jsp";
 }

 try {
 String contentType = multipartFile.getContentType();
 String originalFilename = multipartFile.getOriginalFilename();
 byte[] bytes = multipartFile.getBytes();
 System.out.println("上传文件名为-->" + originalFilename);
 System.out.println("上传文件类型为-->" + contentType);
 System.out.println("上传文件大小为-->"+bytes.length);

 //filePath为存储路径
 String filePath = "d:/staticResourcesTest";
 System.out.println("filePath-->" + filePath);
 //存储在staticResourcesTest下的imgupload文件夹下
 File parentPath = new File(filePath, "imgupload");
 System.out.println("上传目的地为-->"+parentPath.getAbsolutePath());
 try {
 File destFile = new File(parentPath,originalFilename);//上传目的地
 FileUtils.writeByteArrayToFile(destFile,multipartFile.getBytes());
 } catch (Exception e) {
 e.printStackTrace();
 }
 request.setAttribute("message", "You successfully uploaded '" + multipartFile.getOriginalFilename() + "'");

 } catch (IOException e) {
 e.printStackTrace();
 }
 return "/upload_result.jsp";
 }

 /**
 * 上传多个文件,同时接受业务数据
 * @param origFiles
 * @param request
 * @param user
 * @return
 */
 @PostMapping("/uploadMultiFiles")
 public String uploadMultiFiles(@RequestParam("file") List<MultipartFile> origFiles, HttpServletRequest request, User user) {
 //User为实体类
 System.out.println("User=="+user);
 if (origFiles.isEmpty()) {
 request.setAttribute("message", "Please select a file to upload '");
 return "/upload_result.jsp";
 }

 try {
 for (MultipartFile origFile : origFiles) {
 String contentType = origFile.getContentType();
 String fileName = origFile.getOriginalFilename();
 byte[] bytes = origFile.getBytes();
 System.out.println("上传文件名为-->" + fileName);
 System.out.println("上传文件类型为-->" + contentType);
 System.out.println("上传文件大小为-->"+bytes.length);

 String filePath = "d:/staticResourcesTest";
 System.out.println("上传目的地为-->"+filePath);
 try {
 //上传目的地(staticResourcesTest文件夹下)
 File destFile = new File(filePath,fileName);
 FileUtils.writeByteArrayToFile(destFile,origFile.getBytes());
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 request.setAttribute("message", "You successfully uploaded '");
 } catch (IOException e) {
 e.printStackTrace();
 }

 return "/upload_result.jsp";
 }
}

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的Java教程视频栏目!

文档

SpringMVC文件上传的方法介绍(代码)

SpringMVC文件上传的方法介绍(代码):本篇文章给大家带来的内容是关于SpringMVC文件上传的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。SpringMVC为文件上传提供了直接的支持,这种支持是用即插即用的MultipartResolver实现的。SpringMVC使用Ap
推荐度:
标签: 上传 方法 介绍
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top