技术点描述
上传大文件并且没有内存压力的文件服务。
实现方案
Netty利用块(HttpChunk)对开发文件服务器端做了很好的实现:
内容存储方式:
内存、硬盘、混合存储。
参考源码包
-
源码包:
- 接口/抽象类/类说明:
- InterfaceHttpData(interface):实现该接口的对象可以用HttpPostRequestEncoder/Decoder编解码
- HttpDataFactory(interface):创建InterfaceHttpData对象
- HttpData(interface):继承InterfaceHttpData
- Attribute(interface):属性接口,继承HttpData
- FileUpLoad(interface):可存放在内存、临时文件或一些其他实现
DefaultHttpDataFactory
根据构造函数给FileUpload和Attribute提供默认的工厂。
- 重要方法:
-
public DefaultHttpDataFactory(boolean useDisk) {
this.useDisk = useDisk;
checkSize = false;
}
参数为true时设置为硬盘存储,为false内存存储
-
public DefaultHttpDataFactory(long minSize) {
useDisk = false;
checkSize = true;
this.minSize = minSize;
}
为混合存储模式,如果HttpData大于最小值将会存储在硬盘,否则存储在内存
-
重要属性
private final ConcurrentHashMap<HttpReq

本文介绍了Netty中实现文件上传的详细步骤,包括内存、硬盘和混合存储方式。讲解了DefaultHttpDataFactory的重要方法,如何设置存储模式,以及HttpPostRequestEncoder在编码请求时的关键操作。还展示了DiskFileUpload类如何处理文件存储,并提供了HttpUploadClient和HttpUploadServerHandler的示例代码,强调了文件清理和重命名的注意事项。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



