我正在尝试存储通过PUT发送到Restlet资源的文件。
curl语句如下所示:
curl -X PUT "http://localhost:8080/EAIConfig/ri/media" --data-binary img019.png
这是我的资源实施:
@Override
protected Representation put(Representation entity) throws ResourceException {
try {
InputStream in = entity.getStream();
OutputStream out = new FileOutputStream("/Temp/media-file.png");
IOUtils.copy(in,out);
out.close();
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new EmptyRepresentation();
}
这种运行没有错误。但结果/Temp/media-file.png
确实包含已发送文件的名称,而不是已发送的图像数据。
知道如何获取文件内容吗?
答案 0 :(得分:1)
我认为这不是你的Restlet代码中的问题,而是你用curl调用它的方式。
你忘记了' @'在参数--data-binary
中。你应该使用类似的东西:
curl -X PUT "http://localhost:8080/EAIConfig/ri/media" --data-binary "@img019.png"
我尝试使用您的代码,它适用于我。我想你是Commons IO的课程IOUtils
。
一个小评论。您的方法put
需要定义为公开,并且注释@Put
由Restlet直接调用; - )
希望它可以帮到你, 亨利