在完成springboard某个功能时遇到个问题,前端表单上传了个文件,服务端接收的是FormDataMultiPart,希望通过FormDataMultiPart拿到上传文件的size。
一开始获取文件的InputStream拿,但是InputStream真正实例是org.jvnet.mimepull.DataHead.ReadMultiStream,ReadMultiStream没有实现available方法,所以拿不到file size;后面尝试在FormDataContentDisposition里面拿,也拿不到;最后找了一些网站文章,研究了一下源码,发现可以获取服务器临时缓存文件的java.io.File实例,这里可以拿到size 测试代码: @Transactional
@POST
@Path("/upload")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public FileUploadResultDto upload(FormDataMultiPart formData) {
try {
CommonLogic.checkLoginFromSessionAndThrowException(request);
List filePartList = FileLogic.filterInvalidFile(formData.getFields("addFile"));
for (FormDataBodyPart filePart : filePartList) {
InputStream inputStream = filePart.getValueAs(InputStream.class);
System.out.println("InputStream size:" + inputStream.available()); FormDataContentDisposition disposition = filePart.getFormDataContentDisposition();
System.out.println("disposition size:" + disposition.getSize()); java.io.File file = filePart.getValueAs(java.io.File.class);
System.out.println("File size:" + file.length());
}
return null;
} catch (IOException e) {
throw new RuntimeException("???");
}
} 打印结果:
InputStream size:0
disposition size:-1
File size:3979 总结:
FormDataMultiPart获取file的FormDataBodyPart,通过FormDataBodyPart.getValueAs(java.io.File.class)方法拿到ava.io.File实例,File.length()就是上传文件的size

最新文章

  1. ASP.NET Core的路由[3]:Router的创建者——RouteBuilder
  2. [2015hdu多校联赛补题]hdu5301 Buildings
  3. C#时间戳转成php的time()
  4. Linux + Mono 目前已经支持Entity Framework 6.1
  5. [NOIP2009] 靶形数独(搜索+剪枝)
  6. CCocos2Dx 一段遍历子节点的代码
  7. 微软Hololens学院教程-Hologram 210 Gaze(凝视)【微软教程已经更新,本文是老版本】
  8. CSS左中右布局,规范案例
  9. Main方法中传入参数
  10. javax.ejb.SessionBean
  11. java中常用的空判断
  12. 爬虫_腾讯招聘(xpath)
  13. CSS3中和动画有关的属性transform、transition 和 animation
  14. bzoj3997
  15. 异步IO(协程,消息循环队列)
  16. Redis列表
  17. NO--16 vue之父子组件传值
  18. 2015/10/9 Python核编初级部分学习总结
  19. php查询mysql数据库 查询条件替中文字符串变量时无法查询
  20. linux下mysql提示"mysql deamon failed to start"错误的解决方法

热门文章

  1. github博客配置
  2. SIM卡的消失会让运营商们恐慌吗?
  3. Java程序监控---Metrics
  4. 【简单版】hexo博客搭建流程梳理
  5. 前端JS题
  6. P1097 统计数字
  7. python3自动安装脚本,python3.x与python2.x共存
  8. 【读书笔记】https://source.android.google.cn/compatibility/tests?hl=en
  9. Git建立本地分支和远程分支的映射关系
  10. 使用java短信验证