如何接收多个ChunkedFiles

时间:2013-09-17 15:45:12

标签: netty

我正在建立客户端/服务器上传应用程序。 客户端将向服务器发送多个大文件。

我已经发现像ChunkedFile这样的ChunkedInput类只将文件块发送到服务器。 客户端只将ChunkedWriteHandler添加到管道中,然后在文件后发送文件(这是正确的吗?)

//Client snippets
public void initChannel(SocketChannel ch) throws Exception {
  ch.pipeline().addLast(new ChunkedWriteHandler());
}
public void send(Channel channel, List<File> files){
    for (Iterator<File> iterator = files.iterator(); iterator.hasNext();) {
        File file = iterator.next();
        channel.write(file.length());
        ChannelFuture cf = channel.writeAndFlush(new ChunkedFile(file));
        cf.await();
    }

但我究竟在服务器端做什么? 如何实现第一个文件的结束? ChunkedFile没有发送文件大小的块吗? 也许有人可以为服务器端发布代码片段? 提前致谢

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。

问题似乎是

channel.write(file.length());

我必须向频道写一个ChunkedInput。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeLong(file.length());
dos.flush();
channel.write(new ChunkedStream(new ByteArrayInputStream(baos.toByteArray())));