【发布时间】:2012-03-30 23:56:13
【问题描述】:
我正在尝试让示例 Netty HttpUploadServer 通过 HTTP PUT 接收上传的文件,代码在这里找到: https://github.com/netty/netty/blob/master/example/src/main/java/io/netty/example/http/upload/HttpUploadServerHandler.java
为了测试 HTTP POST 文件上传,我使用了这个 curl 命令:
curl -F "myfile=@testfile.txt" http://127.0.0.1:8080
为了测试 HTTP PUT 文件上传,我使用了这个 curl 命令:
curl -T "testfile.txt" http://127.0.0.1:8080
我注释掉了 writeMenu 并返回,因为我使用的是 curl 而不是 Web 浏览器。使用 curl 进行 POST,一切似乎都可以正常工作,但是使用 PUT 我没有在 readHttpDataAllRecieve (HttpUploadServerhandler) 中获得任何数据:
private void readHttpDataAllReceive(Channel channel) {
List<InterfaceHttpData> datas = null;
try {
datas = decoder.getBodyHttpDatas();
System.out.println("size " + datas.size());
} catch (NotEnoughDataDecoderException e1) {
// Should not be!
e1.printStackTrace();
responseContent.append(e1.getMessage());
writeResponse(channel);
Channels.close(channel);
return;
}
for (InterfaceHttpData data: datas) {
writeHttpData(data);
}
responseContent.append("\r\n\r\nEND OF CONTENT AT FINAL END\r\n");
}
数据 = 解码器.getBodyHttpDatas();数据在 PUT 中的大小始终为 0,但在 POST 中则没有。
感谢您的任何想法
【问题讨论】: