java 通过文件路径获得MulipartFile类型文件 - File转MulipartFile

  • 方式一:使用MockMultipartFile函数
  • 方式二:数据流实现

思路:路径创建出File文件类型的对象,然后通过MultipartFile对象的MockMultipartFile方法将生成的File文件转化为MultipartFile文件,上代码;

方式一:使用MockMultipartFile函数

controller层:

package com.java.product.module.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;@Api(value = "uploadFile", tags = "上传文件")
@RequestMapping("/uploadFile")
@RestController
public class uploadFileController {@ApiOperation(value = "上传2", notes = "filePath:文件路径")@GetMapping("/getMulipartFile2")public MultipartFile getMulipartFiles2(String filePath) throws IOException {File file = new File(filePath);FileInputStream fileInputStream = new FileInputStream(file);MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),"application/sql", fileInputStream);long size = multipartFile.getSize();return multipartFile;}
}

依赖的包:

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.0.1</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.1.7.RELEASE</version>
</dependency>

下面直接使用swagger来进行测试,没有配置swagger的同学使用postMan也可以;

看来是没错了~对象不为空,且和上传文件的属性中的文件字节大小一样;

然后F9放开断点~发现…

报错了!?!?!
对,就是报错了,Type definition error - 类型定义错误,因为前端虽然能上传MultipartFile类型的文件,但是却无法解析,所以,不要把MultipartFile文件对象直接从后台给前端哦~


方式二:数据流实现

直接看代码吧

Controller层

package com.java.product.module.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;@Api(value = "uploadFile", tags = "上传文件")
@RequestMapping("/uploadFile")
@RestController
public class uploadFileController {@ApiOperation(value = "上传1", notes = "filePath:文件路径")@GetMapping("/getMulipartFile1")public MultipartFile getMulipartFile1(String filePath) {File f = new File(filePath);String fieldName = f.getName();FileItemFactory factory = new DiskFileItemFactory(16, null);FileItem item = factory.createItem("file", "application/sql", false, fieldName);int bytesRead = 0;byte[] buffer = new byte[8192];try {FileInputStream fis = new FileInputStream(f);OutputStream os = item.getOutputStream();while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {os.write(buffer, 0, bytesRead);}os.close();fis.close();} catch (IOException e) {e.printStackTrace();}MultipartFile mfile = new CommonsMultipartFile(item);long size = mfile.getSize();return mfile;}
}

POM文件依赖:

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

然后运行看转化后的文件大小,如下图,依然成功了~

java 通过文件路径获得MulipartFile类型文件 - File转MulipartFile相关推荐

  1. Java之相对路径找不到文件问题解决方法

    Java之相对路径找不到文件问题解决方法 参考文章: (1)Java之相对路径找不到文件问题解决方法 (2)https://www.cnblogs.com/gongxr/p/8862155.html ...

  2. fopen文件路径怎么写_PHP文件上传

    文件系统处理的作用: 1. 所有的项目离不开文件处理 2. 可以用文件长时间保存数据 3. 建立缓存, 服务器中文件操作 文件处理 1. 文件类型 以Linux为模型的, 在Windows只能获取fi ...

  3. 批量修改指定文件夹里面相同类型文件的扩展名(转自Github,原作者Crag Richards)

    batch_rename_file.py 批量修改指定文件夹里面相同类型文件的扩展名(转自Github,原作者Crag Richards) ''' 主要思路: 1.创建一个batch_rename函数 ...

  4. python进阶14文件路径(找不到文件)

    原创链接:python进阶14文件路径(找不到文件) 开发时遇到问题,文件路径不正确,找不到文件等等,都是这一类问题. curdir,argv,file 举例: 文件1代码: 1 2 3 4 5 6 ...

  5. 帮你整理文件夹下各类型文件文件整理工具

    帮你整理文件夹下各类型文件,可按后缀名,按月份进行归档整理. 比较适合用来整理手机里长期积累的照片和视频. 整理完的文件夹如下: 下载链接: https://download.csdn.net/dow ...

  6. java saveas绝对路径_java实现对文件的各种操作(转)

    各种操作挺全的: java中提供了io类库,可以轻松的用java实现对文件的各种操作.下面就来说一下如何用java来实现这些操作. 新建目录 //String URL = request.getReq ...

  7. java如何获取文件路径_java如何获取文件路径

    第一种:File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  8. mfc打开指定路径下指定类型文件_Windows 网络编程:文件操作

    一次性进群,长期免费索取教程,没有付费教程. 教程列表见微信公众号底部菜单 进微信群回复公众号:微信群:QQ群:460500587 微信公众号:计算机与网络安全 ID:Computer-network ...

  9. python指定文件路径_python实现指定文件夹下的指定文件移动到指定位置

    # coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding('utf8') # print ...

最新文章

  1. 第7章 面向对象编程(OOP) 《Kotin 编程思想·实战》
  2. 易语言逐条读access数据_易语言操作数据教程之ACCESS实战视频教程
  3. OpenStack 的单元测试
  4. pycharm中传入命令行参数
  5. OS / 线程哪些内容是私有的和共享的?
  6. 部署windows服务
  7. 【ABP框架系列学习】N层架构(3)
  8. SysLink UserGuide
  9. 如何去掉UITableViewController中的分隔线setSeparatorStyle
  10. 阿里 2 年内市值将赶超苹果;腾讯回应吃鸡下架;滴滴恢复深夜运营 | 极客头条...
  11. jsp在ie6中css的margin属性失效问题
  12. TCP协议无边界的问题
  13. 灵活的javaScript
  14. 美图秀秀编辑器盖住了顶导怎么解决
  15. 为什么 fac_us=SystemCoreClock/8000000?
  16. 主机服务器信息控制台,服务器的监控控制台
  17. Android下载多张图片保存到本地
  18. 树莓派开发实战项目 智能家居--简单工厂模式(摄像头图片获取)
  19. 公司内局域网访问接口
  20. mysql中week()函数

热门文章

  1. Dependency Injection2
  2. 刚在港交所介绍上市,蔚来汽车又要在新交所第二上市
  3. Prometheus 报警规则配置
  4. Python scrapy框架(01):scrapy介绍 初识scrapy
  5. 【python游戏制作】大富翁游戏源码
  6. QTP测试web时:打开ie浏览器进行录制但qtp中并没有脚本生成的解决办法
  7. 一元线性回归利用最小二乘法求解原理代码及案例
  8. ArcGis系列-java调用GP分析
  9. i am biter 逆置为:biter am i
  10. 数据结构学习(C++)——单链表应用(一元多项式【1】) (转)