Netty FileUpload 识别不了某些文件 (FileUpload.getFile()方法的一些坑)

4 篇文章 0 订阅
3 篇文章 0 订阅

Netty 作为服务器接收文件时,通常采用的是form-data的方式去接收文件。

那么,在某些情况下明明识别了form-data是文件, FileUpload.getFile()却还是报出异常

问题是什么?

通过断点,我们可以看到,出现异常时,FileUpload对象中,并没有File 这个内置对象。

而未出现异常的文件,FileUpload对象中是存在File这个对象的。

原因是:

你在解析这个form-data,采用的策略!

如下:

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

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

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

知道问题就简单了,我们修改下策略。

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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值