单个文件上传

第一种方法:

/*** * @param file         需要上传的文件* @param baseUrl      上传地址* @param uploadName   上传文件如果要更改文件名称,该字段为要更改的名称,不需要更改则该参数应为空字符串或null*/public static void upload(MultipartFile file,String baseUrl,String uploadName){// 1、获取文件的原始文件名, 通过原始文件名获取文件后缀 例如:abc.jpgString originalFilename = file.getOriginalFilename();//后缀文件类型。如:.txt   .pngString suffix = originalFilename.substring(originalFilename.lastIndexOf("."));//文件前缀名称String prefixName = originalFilename.substring(0, originalFilename.lastIndexOf("."));// 2、使用UUID重新生成文件名,防止文件名称重复造成文件覆盖String fileName = "";if (StringUtils.isNotEmpty(uploadName)){fileName = uploadName + suffix;}else {fileName = originalFilename;}// 3、创建一个目录对象File dir = new File(baseUrl);//判断当前目录是否存在if (!dir.exists()) {boolean mkdirs = dir.mkdirs();if (!mkdirs) {throw new CommonException(CommonCode.FILE_UPDATE_ERROR);}}try {// 4、将临时文件转存到指定位置file.transferTo(new File(baseUrl+File.separator + fileName));} catch (IOException e) {e.printStackTrace();}}

第二种方法:

 public void upload(@RequestParam("file")MultipartFile file ){try {// 1、获取文件的原始文件名, 通过原始文件名获取文件后缀 例如:abc.jpgString originalFilename = file.getOriginalFilename();//后缀文件类型。如:.txt   .pngString suffix = originalFilename.substring(originalFilename.lastIndexOf("."));//文件前缀名称String prefixName = originalFilename.substring(0, originalFilename.lastIndexOf("."));//TODO 要上传的文件地址,应从配置文件或者数据库中读取。本地测试时可以写 :D:\\uploadFileString resultUrl = "";// 2、创建一个目录对象File dir = new File(resultUrl);//判断当前目录是否存在if (!dir.exists() || (!dir.isDirectory())) {dir.mkdirs();}//3、若文件已存在,重命名为历史文件File uploadFile = new File(resultUrl+ File.separator+ originalFilename);//数据入库if (uploadFile.exists()){String rename =  "重命名后的名称";File renameFile = new File(resultUrl+File.separator+prefixName+"-"+rename+suffix);com.google.common.io.Files.copy(uploadFile,renameFile);}// 4、将临时文件转存到指定位置file.transferTo(uploadFile);}catch (Exception e){e.printStackTrace();}}

如果上述代码出现:com.google.common.io找不到

请在pom.xml文件中加入一下配置:

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0-jre</version>
</dependency>

多个文件单个字段上传(就是多次调用单个文件上传):

    /*** 多个文件单个字段上传:例如:file : [logo.jpg , name.txt]* @param files* @param baseUrl*/public static void uploadFiles(MultipartFile[] files,String baseUrl,String uploadName){for (MultipartFile file : files) {upload(file,baseUrl,uploadName);}}

多个文件多个字段上传:

在apifox中测试应该为:

 /*** 多个文件多字段上传。例如: file1:logo.png , file2:name.txt* @param request*/public static void uploadFiles(MultipartHttpServletRequest request){CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());if (multipartResolver.isMultipart(request)){//上传多个文件,每个字段一个文件Iterator<String> fileNames = request.getFileNames();while (fileNames.hasNext()){//取得上传的文件String uploadName = fileNames.next();MultipartFile file = request.getFile(uploadName);if (file != null){String projectPath = request.getSession().getServletContext().getRealPath("/");String originalFilename = file.getOriginalFilename();String temFile = projectPath + System.currentTimeMillis() + "_" + originalFilename;File targetFile = new File(temFile);try {file.transferTo(targetFile);}catch (IOException e){e.printStackTrace();}}}}}

注意:

在调用多个文件多个字段的方法时如果出现java.lang.ClassNotFoundException: org.apache.commons.fileupload.disk.DiskFileItemFactory的解决方法:

如果出现以上错误,请在pom.xml中引入

<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.1</version>
</dependency>

文件上传--单个或多个文件上传相关推荐

  1. Linux两个网卡mac地址重复,ARP响应Linux服务器上的单个MAC地址,同一网络上有多个接口...

    Linux服务器有2个活动网络接口: IF:eth1 IP:192.168.1.1/24 MAC:11:11:11:11:11:11 (1GbE) IF:eth2 IP:192.168.1.2/24 ...

  2. 批量将多个 PPT 幻灯片文件合并成单个 PPT 文件

    概要:我们经常处理 PPT 幻灯片文件,有时候我们有很多个 PPT 幻灯片文件需要整理.最常见的需求就是我们需要批量的将多个 PPT 幻灯片文件合并成一个独立的 PPT 文件,这个时候该怎么办呢?如果 ...

  3. java struts2 excel上传_文件上传下载——通过struts的FormFile上传单个excel文件

    通过struts的FormFile上传单个excel文件 思路: 1.通过struts的FormFile获取File(这个文件的路径是"客户端的选择的路径地址") 2.将客户端的文 ...

  4. Spring MVC文件上传示例教程 - 单个和多个文件

    Spring MVC文件上传示例教程 - 单个和多个文件 文件上传是任何Web应用程序中非常常见的任务.我们之前已经看过如何在Servlet和Struts2文件上传中上传文件.今天我们将学习Sprin ...

  5. 第十一章:实现SpringBoot单个、多个文件的上传

    在企业级项目开发过程中,上传文件是最常用到的功能.SpringBoot集成了SpringMVC,当然上传文件的方式跟SpringMVC没有什么出入.下面我们来创建一个SpringBoot项目完成单个. ...

  6. JS_单个或多个文件上传_不支持单独修改

    A-From表单直接填写提交地址,不过干预: 1. 单文件上传 最简单的文件上传,是单文件上传,form标签中加入enctype="multipart/form-data",for ...

  7. part实现实现单个(上传图片和文件上传)

    不用架包,但是需要添加一个注解. @MultipartConfig // 获取到上传的文件Part part = req.getPart("vimg");// 获取到文件名Stri ...

  8. Struts文件上传与下载详解 _上传多个文件

    在上一篇中给大家列出的单个文件的上传,那么这一篇咱们讲讲上传多个文件改怎么作呢?由于过程和上传单个文件的类似,所以在这里不细说,相信大家都能看懂,看不懂的可以在评论区留言,我看到之后会及时回复的!! ...

  9. Struts文件上传与下载详解_上传单个文件

    大家都知道Servlet上传文件的时候用的是commons-fileupload插件上传的,但是过程极其的麻烦,同样Struts2也有自带的文件上传,但是过程比Servlet里面的简单了不少,接下来请 ...

最新文章

  1. webpack 占位符_通过示例学习Webpack:占位符图像模糊
  2. Linux centos下项目环境搭建及版本部署
  3. bupt summer training for 16 #2 ——计算几何
  4. c语言函数打印零星,C语言零星笔记--(const、typedef)
  5. 事业单位招 计算机面试实践技能操作,2019山东事业单位卫生类招聘面试实践技能概论...
  6. html _ 提取html片段内的纯文本
  7. jsoup爬虫教程技巧_Jsoup V的幕后秘密:优化的技巧和窍门
  8. 初探EntityFramework——空Code First模型
  9. python3集合_Python3 集合
  10. bzoj 5094: 硬盘检测(概率)
  11. 原生体验挡不住!JavaScript开源跨平台框架NativeScript
  12. ubuntu操作系统之新手操作必看篇
  13. Assassin’s Creed(hdu4415,贪心)
  14. style.left不起作用的问题
  15. 豆瓣高分JAVA书籍,值得收藏
  16. python中format函数用法简书_从Python安装到语法基础,这才是初学者都能懂的爬虫教程...
  17. 数据库表和表字段的命名规范
  18. 国产智能BI产品崛起,帆软Fine BI、瓴羊Quick BI等应该如何选择
  19. [Linux入门系列].1.2.VMWare WorkStation和VMPlayer的安装
  20. 三级等保备案去哪查_民贷天下通过国家信息安全等级保护三级备案

热门文章

  1. 协同办公“战役”,华为输了吗?
  2. iatf16949标准三大过程_IATF16949要求的过程、文件、记录汇总
  3. 解决报错:OSError: Failed to open file b‘D:\\\xe5\xad\xa6\xe4\xb9\xa0\\scipy-_7cm39vc‘(图文并茂版详细版!!)
  4. 使用BS4爬取智联招聘
  5. Javascript版开心农场
  6. 曲线数学NURBS之B样条曲线
  7. 【机器学习-斯坦福】学习笔记1 - 机器学习的动机与应用
  8. 国家计算机二级和省计算机二级的区别?
  9. 比 Navicat 还要好用,功能还很强大的数据库管理工具!
  10. 美团配送php,PHP对接美团配送接口遇到的坑