我正在尝试使用Play Framework来实现Web应用程序,以替代旧的HTTP服务器实现,该实现正在连接旧的非浏览器传统HTTP客户端。
该客户端是用Delphi编写的,它直接在请求正文中发布数据,其中包含一些标头信息。
我以为我会在
中得到一些东西request.body /* In the play controller */
,但没有什么。
请参阅下面的代码:
public static void uploadPicture() {
InputStream data = request.body;
String fx = Play.getFile("").getAbsolutePath()+File.separator+"uploads"+File.separator+"test.jpg";
File f = new File(fx);
FileOutputStream moveTo = new FileOutputStream(fx);
try {
byte[] b = new byte[4096];
for (int x = 0; (data.read(b)) != -1;){
moveTo.write(b, 0, x);
}
} finally{
moveTo.close();
}
}
编辑:为了澄清我的观点:我去了,我在Eclipse HttpServlet
和doPost()
方法中创建了一个简单的动态Web项目,当我获得request.getInputStream()
时,它包含从传统客户端发送的文件。
Play对请求的正文做了一些事情!
我有什么选择?
谢谢。
irfan
好吧,这是播放1.2.4的错误。我安装了最新版本1.2.5,一切都可以使用。
您可以在控制器中的request.body
中访问请求的原始主体。