博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMVC文件上传(转)
阅读量:6942 次
发布时间:2019-06-27

本文共 6212 字,大约阅读时间需要 20 分钟。

原文链接:

http://www.cnblogs.com/lonecloud/p/5989905.html

在Spring-mvc.xml注入bean

1     
2
4
5
6
7
8
9
10

如果想要在model里面进行文件上传到数据库中则

1 package cn.lonecloud.model; 2  3 import java.io.Serializable; 4 import java.util.List; 5  6 import org.springframework.web.multipart.MultipartFile; 7  8 public class Test implements Serializable{ 9 10     private String id;11     12     private String name;13     14     private String price;15     //文件上传List16     private List
files;17 18 public String getId() {19 return id;20 }21 22 public void setId(String id) {23 this.id = id;24 }25 26 public String getName() {27 return name;28 }29 30 public void setName(String name) {31 this.name = name;32 }33 34 public String getPrice() {35 return price;36 }37 38 public void setPrice(String price) {39 this.price = price;40 }41 42 public List
getFiles() {43 return files;44 }45 46 public void setFiles(List
files) {47 this.files = files;48 }49 50 51 }

Controller层代码

1     /** 2      * 将文件封装在Model里面 3      * @Description:  4      * @param request 用来获取路径 5      * @param test 封装类 6      * @param model 返回模型 7      * @return 8      */ 9     @RequestMapping("save")10     public String saveTest(HttpServletRequest request,11             @ModelAttribute Test test, Model model) {12         List
files = test.getFiles();//获取文件13 List
fileNames = new ArrayList<>();14 if (null != files && files.size() != 0) {//判断空15 for (MultipartFile multipartFile : files) {16 String fileName = multipartFile.getOriginalFilename();17 String realPath = request.getServletContext().getRealPath(18 "/file");//获取路径19 fileNames.add(fileName);20 File parents = new File(realPath);21 if (!parents.exists()) {22 parents.mkdirs();23 }24 File destFile = new File(parents, fileName);25 try {26 multipartFile.transferTo(destFile);//拷贝文件27 } catch (IllegalStateException e) {28 // TODO Auto-generated catch block29 e.printStackTrace();30 } catch (IOException e) {31 // TODO Auto-generated catch block32 e.printStackTrace();33 }34 }35 }36 model.addAttribute("test", test);37 return "fileUpload/details";38 }

直接暴露在控制层当做参数使用

1     /** 2      * 直接文件获取 3      * @Description:  4      * @param request 5      * @param files 6      * @param result 7      * @return 8      */ 9     @RequestMapping("/saveFile")10     public String saveFile(@RequestParam("files") List
files,HttpServletRequest request) {11 // public String saveFile(@RequestParam("files") CommonsMultipartFile[] files,HttpServletRequest request) {12 List
fileNames = new ArrayList<>();13 System.out.println(files);14 15 if (null != files && files.size() != 0) {16 // if (null != files && files.length != 0) {17 for (MultipartFile multipartFile : files) {18 String fileName = multipartFile.getOriginalFilename();19 String realPath = request.getServletContext().getRealPath(20 "/file");21 fileNames.add(fileName);22 File parents = new File(realPath);23 if (!parents.exists()) {24 parents.mkdirs();25 }26 File destFile = new File(parents, fileName);27 try {28 multipartFile.transferTo(destFile);29 } catch (IllegalStateException e) {30 // TODO Auto-generated catch block31 e.printStackTrace();32 } catch (IOException e) {33 // TODO Auto-generated catch block34 e.printStackTrace();35 }36 }37 }38 return "fileUpload/details";39 }

 uploadFile.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
Insert title here
select a file
select files
 
 
 
我的研究:
@ResponseBody    @RequestMapping(value = {
"/upload_merch_access_file"}) public Map uploadMerchAccessFile(HttpServletRequest request) { Map resultMap = new HashMap<>(); String filePath = ""; MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartRequest.getFile("file"); String fileName = multipartFile.getOriginalFilename(); File targetFile = new File(HUIXIN_BACCESS_FILE + "\\" + DateUtil.getDate(), fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } else { resultMap.put("statusCode", 300); resultMap.put("message", "已存在同名文件!"); targetFile.delete(); targetFile.mkdirs(); //return resultMap; } try { multipartFile.transferTo(targetFile); filePath = targetFile.getPath(); } catch (Exception e) { logger.info("上传批量开通文件异常{}"); logger.error(e.getMessage()); resultMap.put("statusCode", 300); resultMap.put("message", "上传批量开通文件失败!"); return resultMap; } resultMap.put("statusCode", 200); resultMap.put("message", "批量开通上传成功!"); resultMap.put("filename", fileName); resultMap.put("filePath", filePath); return resultMap; }

 

这个类:
MultipartFile

getName获取的是fileName

getOriginalFilename获取的是相对路径的Name,切割最后一个\到末尾

transferTo:移动

 

 

 这个没看源码。

 
你可能感兴趣的文章
【算法】递归算法之n阶矩阵行列式求解
查看>>
React Native 的默认单位和自适应布局方案
查看>>
ReactNative安卓首屏白屏优化
查看>>
设计模式(Design Pattern)系列之.NET专题
查看>>
为 Nginx 添加 HTTP 基本认证(HTTP Basic Authentication)
查看>>
gulp使用ES6
查看>>
ECUG Con 邀您共议服务端开发最深度实践
查看>>
关于优惠券功能设计之我的见解
查看>>
JavaScript中的函数式编程二(翻译)
查看>>
Javascript的异步编程:Promise
查看>>
荣誉,还是苦逼?| 也议全栈工程师和DevOps
查看>>
gulp详细基础教程
查看>>
CSS基础篇-- position属性讲解
查看>>
Python2.x的编码问题
查看>>
开源编辑器 Atom 简化代码审查过程
查看>>
每秒聚合5亿个指标,Uber 开源大规模指标平台 M3
查看>>
中国航天局向荷兰、德国等移交嫦娥四号载荷数据,并同时发布其他项目合作机会公告 ...
查看>>
Spring MVC原理
查看>>
图灵奖得主长文报告:是什么开启了计算机架构的新黄金十年?(上) ...
查看>>
pseudo tty破除无法自动输入密码的限制
查看>>