项目目的:
使用MultipartFile接收http post传进来的图片,Controller中把接收到的图像转换为File对象给后续程序使用。
代码实现:
SpringBoot MVC接收外部传入的图片,强转失败。代码如下:
@PostMapping("/parseImage") public String parseImage(HttpServletRequest request, @RequestParam MultipartFile[] uploadFiles) throws IOException, ServletException { StandardMultipartHttpServletRequest req = (StandardMultipartHttpServletRequest) request; int fileSize = uploadFiles.length; File[] files = new File[fileSize]; for (int i = 0; i < fileSize; i++) { CommonsMultipartFile f = (CommonsMultipartFile) uploadFiles[i]; DiskFileItem dfi = (DiskFileItem) f.getFileItem(); File tempFile = dfi.getStoreLocation(); files[i] = tempFile; } // 此处省略部分代码 // ... return "success"; }
报错:
java.lang.ClassCastException: org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile cannot be cast to org.springframework.web.multipart.commons.CommonsMultipartFile
细节说明:
SprintBoot 缺省 HttpServletRequest 的实现是 StandardMultipartHttpServletRequest。
报错其实说的也是很明白了,StandardMultipartFile类不能强转为CommonsMultipartFile,但又想转存为File对象。 基本思路是: 先创建一个新的临时文件dfile对象,然后调用MultipartFile.transferTo(File dfile)方法把MultipartFile转换为File对象。 新的代码如下:
@PostMapping("/parseImage") public String parseImage(HttpServletRequest request, @RequestParam(value = "uploadFiles", required = true) MultipartFile[] uploadFiles) { int fileSize = uploadFiles.length; File[] files = new File[fileSize]; if (uploadFiles != null && uploadFiles.length > 0) { for (int i = 0; i < uploadFiles.length; i++) { MultipartFile f = uploadFiles[i]; System.out.println(f.getName()); // 为上传的key值 System.out.println(f.getOriginalFilename()); // 上传的真实文件的文件名 File dfile = null; try { dfile = File.createTempFile("prefix", "_" + f.getOriginalFilename()); f.transferTo(dfile); files[i] = dfile; } catch (IOException e) { e.printStackTrace(); } } }// 此处忽略部分代码 return "seccess"; }
SpringBoot application.yml配置事例:
spring: servlet: multipart: max-file-size: 20MB max-request-size: 100MB enabled: true resolve-lazily: false
相关推荐
本文给大家带来了解决springboot MultipartFile文件上传遇到的问题,解决方法超简单,感兴趣的朋友参考下本
springboot实现上传图片添加水印
主要介绍了SpringBoot请求参数接收方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本篇文章主要介绍了springboot实现FastJson解析json数据的方法,非常具有实用价值,需要的朋友可以参考下
springboot 大文件上传,支持分片并发上传、断点续传、秒传,已经测试过1.2G的文件,最大支持理论无限制 博文链接:https://blog.csdn.net/haohao123nana/article/details/54692669
多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。...
1:对上传的文件进行压缩 然后加密 2:下载此文件要先解密才能解压
主要介绍了springboot实现上传并解析Excel过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
File 转 MultipartFile 和需要的maven配置File 转 MultipartFile 和需要的maven配置File 转 MultipartFile 和需要的maven配置
需求分析: 通过安卓打开相机相册,使用SSM框架搭建后台接口,前端使用retrofit2进行文件传输 注:低门槛实现系列就是不涉及过深的知识点,不做过多的异常捕获,不过滤版本不判空,面向小白。 ...
原理过程 Springboot中会使用FilterRegistrationBean来注册Filter,Filter是Servlet规范里面的,属于容器范围,Springboot中没有web.xml,那Springboot中,不用管Filter是如何交给Ser...SpringBoot整合XssFilter,...
SSH2框架下实现的导入导出EXCEL小案例,有详细的注释
Android上传单文件和多文件(后台使用MultipartFile),博客地址:https://blog.csdn.net/qq_32090185/article/details/86573530
Springboot的restTemplehttp请求中各种请求参数的传递方式,解决响应信息默认转成LinkedHashMap 而不是我们自定义的类型;关于本地文件或者MultipartFile 文件作为请求参数的传递,关于请求去下载对应的文件信息内容...
本地生成file文件 MultipartFile转为file,获取时长(毫秒),换算毫秒为时分秒 删除本地的file文件
本篇文章主要介绍了SpringMVC使用MultipartFile实现文件的上传,本地的文件上传到资源服务器上,比较好的办法就是通过ftp上传。这里是结合SpringMVC+ftp的形式上传的,有兴趣的可以了解一下。
本次带来的是MultipartFile多文件文件上传,可以在sql执行完成,没有出现异常,再将文件保存进我们的服务器,如果出现异常,文件不会上传到我们的服务器
java springboot 切割分片上传大文件,java springboot 切割分片上传大文件
springboot-ftpclient @Service示例,用于使用Spring Boot从FTP服务器连接,上传和下载文件。 该项目实现了@Service Spring Boot,该服务启用并提供了一个简单的API,以便其他开发人员可以重用它来连接到实现FTP...
MultipartFile上传图片(多图片上传)