我一直在浏览 HTTP 文件服务器和上传服务器上的示例。
我正在编写一个可以同时执行以下操作的文件服务器:发送和接收文件。但我不确定如何合并 2 个管道。或者我可能需要根据命令(上传或获取文件)修改它们。即使文档声明一旦建立通道就无法修改管道,我看到“端口统一”示例确实根据数据对其进行了修改。
任何帮助将不胜感激。
我一直在浏览 HTTP 文件服务器和上传服务器上的示例。
我正在编写一个可以同时执行以下操作的文件服务器:发送和接收文件。但我不确定如何合并 2 个管道。或者我可能需要根据命令(上传或获取文件)修改它们。即使文档声明一旦建立通道就无法修改管道,我看到“端口统一”示例确实根据数据对其进行了修改。
任何帮助将不胜感激。
听起来您需要一个 HTTP 服务器,并区分GET
用于将文件下载到客户端和POST
将文件上传到服务器的 HTTP,而不是用管道区分类型。查看HttpStaticFileServerHandler以下载带有GET
请求的文件。你需要适应的是第一行messageReceived
:
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
HttpRequest request = (HttpRequest) e.getMessage();
if (request.getMethod().equals(HttpMethod.POST)) {
// receive uploaded file
return;
}
if (request.getMethod() != GET) {
sendError(ctx, METHOD_NOT_ALLOWED);
return;
}
...
我认为您需要将您的应用程序视为 2 个子应用程序合二为一。
第一个子应用程序是文件服务器。您将需要根据Http 文件服务器示例引导并为此创建管道。
第二个子应用是上传客户端。您将需要根据http 客户端示例单独引导和创建管道。