本章主要实现服务端接收客户端上报文件以及客户端向服务端请求下载文件
既然已经实现上报数据、远程控制的功能,为何还要上传文件、下载文件呢?
一般情况下确实很少用到,这也是多年项目积累后新加入的功能,场景特殊。
例如,终端OTA升级或者其他操作,终端会持久化一部分配置。
终端存储能力有限,又不想丢弃掉这部分配置,此时就需要用到文件上传,将配置文件上传到服务器作为备份
如果升级失败,或者操作失败,可以进行回滚,原始配置不会丢失,不需要花费精力重新配置,只需要向服务端请求下载原始配置文件即可。
示例代码:
考虑到性能和内存问题,采用分段上传的方式,理论上支持超大文件的上传和下载。
@Slf4j
@Component("FILE_TRANSFER_HANDLER")
public class FileTransferHandler extends AbstractMessageHandler {
@Resource
private NettyProperties properties;
@Resource
private FileService fileService;
@Override
public void request(ChannelHandlerContext ctx, BasicMessage request) {
log.info("\nreceived message:{}", request);
ChannelGroupHelper channelGroupHelper = this.getChannelGroupHelper(); // 获取当前通道属性
Re