项目开发中需要将file转化为MultipartFile,网上百度发现使用org.springframework.mock.web.MockMultipartFile可以

File file3 = new File(fileMap.get("file").toString());
	   FileInputStream in_file = new FileInputStream(file3);  
       // 转 MultipartFile  
       MultipartFile multi = new MockMultipartFile(file3.getName(), in_file); 

发现本地环境是可以的 原因是因为有spring-test这个包。

然而项目发布后发现项目启动不了一直报错找不到MockMultipartFile,原因是发布正式版时、根本不会打测试包。所以找不到。

还有就是MockMultipartFile这个东西是单元测试使用的,尽量不要使用这个。

有喜欢的朋友可以关注下头条号《 老徐聊技术

可以看到 Multipart File 是个接口 转成 Multipart File 格式则需要转成实现 Multipart File 接口的实现类即可,如下选择转成用 Mock Multipart File 实现 首先:需要先引入 依赖 <dependency> <groupId> org . springframework </groupId> <artifactId>spring-test</artifactId> <version>5.3.9</ 打开cmd窗口cd 到 工程根目录,比如我的工程是: D:\code\spring-boot-crud。执行 mvn -U idea:idea 命令,完了以后重新运行项目就正常了! file Multipart File 的时候会用到 Mock Multipart File 当你导入spring-test 依赖 的时候 会跟某些 依赖 冲突(暂未找到具体是哪个冲突) 解决方法 重写一个类去实现 Multipart File 接口 直接用 Mock Multipart File 的源码 public class Multipart File Dto implements Multipart File { private final String name; private String origi org . springframework . mock .jndi.ExpectedLookupTemplate.class org . springframework . mock .jndi.SimpleNamingContext.class org . springframework . mock .jndi.SimpleNamingContextBuilder.class org . springframework . mock . web .DelegatingServletInputStream.class org . springframework . mock . web .DelegatingServletOutputStream.class org . springframework . mock . web .HeaderValueHolder.class org . springframework . mock . web . Mock ExpressionEvaluator.class org . springframework . mock . web . Mock FilterChain.class org . springframework . mock . web . Mock FilterConfig.class org . springframework . mock . web . Mock HttpServletRequest.class org . springframework . mock . web . Mock HttpServletResponse.class org . springframework . mock . web . Mock HttpSession.class org . springframework . mock . web . Mock Multipart File .class org . springframework . mock . web . Mock Multipart HttpServletRequest.class org . springframework . mock . web . Mock PageContext.class org . springframework . mock . web . Mock RequestDispatcher.class org . springframework . mock . web . Mock ServletConfig.class org . springframework . mock . web . Mock ServletContext.class org . springframework . mock . web .PassThroughFilterChain.class org . springframework . mock . web .portlet. Mock ActionRequest.class org . springframework . mock . web .portlet. Mock ActionResponse.class org . springframework . mock . web .portlet. Mock Multipart ActionRequest.class org . springframework . mock . web .portlet. Mock PortalContext.class org . springframework . mock . web .portlet. Mock PortletConfig.class org . springframework . mock . web .portlet. Mock PortletContext.class org . springframework . mock . web .portlet. Mock PortletPreferences.class org . springframework . mock . web .portlet. Mock PortletRequest.class org . springframework . mock . web .portlet. Mock PortletRequestDispatcher.class org . springframework . mock . web .portlet. Mock PortletResponse.class org . springframework . mock . web .portlet. Mock PortletSession.class org . springframework . mock . web .portlet. Mock PortletURL.class org . springframework . mock . web .portlet. Mock RenderRequest.class org . springframework . mock . web .portlet. Mock RenderResponse.class org . springframework .test.AbstractDependencyInjectionSpringContextTests.class org . springframework .test.AbstractSingleSpringContextTests.class org . springframework .test.AbstractSpringContextTests.class org . springframework .test.AbstractTransactionalDataSourceSpringContextTests.class org . springframework .test.AbstractTransactionalSpringContextTests.class org . springframework .test.AssertThrows.class org . springframework .test.ConditionalTestCase.class org . springframework .test.annotation.AbstractAnnotationAwareTransactionalTests.class org . springframework .test.annotation.DirtiesContext.class org . springframework .test.annotation.ExpectedException.class org . springframework .test.annotation.IfPro file Value.class org . springframework .test.annotation.NotTransactional.class org . springframework .test.annotation.Pro file ValueSource.class org . springframework .test.annotation.Repeat.class org . springframework .test.annotation.SystemPro file ValueSource.class org . springframework .test.annotation.Timed.class org . springframework .test.jpa.AbstractAspectjJpaTests.class org . springframework .test.jpa.AbstractJpaTests.class org . springframework .test.jpa.OrmXmlOverridingShadowingClassLoader.class org . springframework .test. web .AbstractModelAndViewTests.class Multipart File 是spring类型,代表HTML中form data方式上传的文件, 含二进制数据+文件名称。 使用 Mock Multipart File but, 是 使用 的,需要导入。因为 使用 到了”spring-test.jar" 所以发现本地环境是可以的 原因是因为有spring-test这个 。 然而项目发布后发现项目启动不了一直报错找不到 Mock Multipart File 。 原因是发布正式版时,不会打测试 。找不到也很正常。根据源码,自己照搬重写一个 方法在项目里... ClassPathResource resource = new ClassPathResource("XXX.js"); Mock Multipart File m file = new Mock Multipart File (" file ", "XXX.js", "png", resource.getInputStream()); MvcResult mvcResult = mock Mvc.perform( Mock MvcRequestBuilders. multipart ("/XX.. 微服务项目中服务调用需要生成 multipart File 问题的几种解决方案。1、引入test 使用 test 中的 Mock Multipart File 。2、自定义实现一个 Mock Multipart File (推荐) <dependency> <groupId> org .power mock </groupId> <artifactId>power mock -api- mock ito2</artifactId> 模拟功能说明:采用spring-test.jar 中的 Mock Multipart File 类,模拟文件上传功能,但是在执行相关业务逻辑代码,提示类找不到。后来检查maven 依赖 是我发现s...