最近在使用 Netty 处理 post 的时候,在解析 form-data 时,针对上传的文件,有些文件是正常的,但是有些文件就会报如下错误:

java.io.IOException: Not represented by a fileat io.netty.handler.codec.http.multipart.AbstractMemoryHttpData.getFile(AbstractMemoryHttpData.java:288)at io.netty.handler.codec.http.multipart.MixedFileUpload.getFile(MixedFileUpload.java:306)...

通过断点可以看到:

  • 当出现异常的时候,FileUpload对象中,并没有File 这个内置对象。

  • 当没有出现异常的时候,FileUpload 对象中是存在 File 这个对象的。

其原因是我们在解析 form-data 的时候使用的策略导致的。

  • 网络上普遍的接收策略都是:

    private static final HttpDataFactory factory = new DefaultHttpDataFactory(DefaultHttpDataFactory.MINSIZE);
    

    这个策略会导致一个问题,就是 form-data 传过来的文件,如果小于 16KB,就单纯的当做 ByteBuf 来处理。

  • 要解决这个问题,需要我们修改一下策略:

    //解析文件大小(如果是:minSize则会过滤掉16K以下的文件,这个则不限制文件最小长度)
    private static final HttpDataFactory factory = new DefaultHttpDataFactory(DefaultHttpDataFactory.MAXSIZE);
    

    这个策略是只要是文件,就会识别为 File 对象,使用 form-data 提交文件时,可以直接通过复制临时文件来达到目的。

参考博客:https://blog.csdn.net/qq_42461790/article/details/107127969

Netty使用FileUpload报错Not represented by a file相关推荐

  1. scp报错:not a regular file

    2019独角兽企业重金招聘Python工程师标准>>> linux 本地文件上传到服务器 scp /home/XXX/file.1txt  liujia@172.16.252.32: ...

  2. sudo vi ~/etc/profile 报错E212:Can't open file for writing

    linux系统,安装SPARK时, 命令行窗口输入:sudo vi ~/etc/profile 输入: #SPARK_HOME SPARK_HOME=/home/luoji/JAVA/spark-2. ...

  3. 2021-08-10 HDFS Web报错Couldn‘t preview the file.

    在查看文件内容时,在红框位置出现报错"Couldn't preview the file" 解决方法 第一步:修改hdfs-site.xml,添加配置信息 <property ...

  4. MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法

    MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法 参考文章: (1)MySQL5.7报错[ERROR ...

  5. Android Sutiod报错:Dx unsupported class file version 52.0(解决)

    一.Android Stuido报错 其实Dx unsupported class file version 52.0和Conversion to Dalvik format failed with ...

  6. SVN报错:can't open file db/txn-current-lock:permission denied 解决方法

    现象: SVN服务器重启后,重新挂载SVN仓库,可以下载代码,但是上传代码发现报错:can't open file db/txn-current-lock:permission denied 刚开始以 ...

  7. SVN报错:can‘t open file db/txn-current-lock:permission denied 解决方法

    SVN报错:can't open file db/txn-current-lock:permission denied 解决方法 参考文章: (1)SVN报错:can't open file db/t ...

  8. mysql 1033_mysql报错1033 Incorrect information in file: ''''xxx.frm''''问题的解决方法(图)...

    这篇文章主要介绍了关于mysql报错1033 Incorrect information in file: 'xxx.frm'问题的解决方法,文中通过示例代码介绍的很详细,需要的朋友可以参考借鉴,下面 ...

  9. 下载公司 svn 项目后启动报错之 uniapp no such file or direc

    下载公司 svn 项目后安装依赖报错之 uniapp no such file or direc 近期公司开展微信小程序业务,需要用到uniapp开发,当从svn把主包下载下来后发现安装依赖报错,un ...

最新文章

  1. 【转】jqGrid学习之参数
  2. 为啥辣椒会辣得人嘴巴疼?这个问题竟然和今年诺奖有关
  3. 关于Linux路由表的route命令(转)
  4. 这或许是实现重试最优雅的姿势了!
  5. tampermonkey怎么不能用了_iPhone12无线充电不能用怎么办-苹果12无线充电失效原因...
  6. php中new与构造函数,php - 在构造函数中使用“ new”关键字 - SO中文参考 - www.soinside.com...
  7. Linux终端(一)
  8. 博途v14电脑要求_博图TIA V14版本完整体验加测试
  9. MQ,如何做到削峰填谷
  10. linux nginx forbidden,Nginx 出现 403 Forbidden 最终解决方法
  11. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(1)
  12. android 斜线 绘制_Android 自定义 斜线进度框 ,雨点式背景
  13. 高德地图基础教程超详细版
  14. matlab 图像二值化 后0、1像素的个数统计
  15. 图文讲解Zabbix 分布式监控平台添加服务监控项(http,nginx,mysql)
  16. 【软考中级】多媒体应用设计师复习笔记第一章
  17. 地下水位监测仪 原理
  18. 计算机ct检查,影像学检查之三 CT(计算机体层)
  19. “特别”的网易,急了
  20. centos安装airflow

热门文章

  1. INFJ的人格成长阶段与功能类型
  2. Android 天气APP(六)旋转风车显示风力、风向
  3. sql -803 DB2修改主键起始值
  4. 手机客户端设置同济邮箱的方法
  5. mmdetection特征可视化V2
  6. php bootstrap 轮播,让Bootstrap轮播插件carousel支持左右滑动手势的三种方法
  7. 基于Cytoscape的GIANT增强包分析网络图的Z、P-score
  8. 微信小程序中通过Basic Auth传递token
  9. Linux资源控制-使用cgroup控制CPU和内存
  10. 十字路口待转区什么用_左转待转区的几种违章 稍不注意你绝对就要中招