[英]Store file in Restlet put method
我正在尝试存储通过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
确实包含已发送文件的名称,而不是已发送图像数据。
知道如何获取文件内容吗?
我认为这不是您的Restlet代码中的问题,而是您使用curl调用它的方式。
您会忘记参数--data-binary
的“ @”。 您应该使用类似这样的东西:
curl -X PUT "http://localhost:8080/EAIConfig/ri/media" --data-binary "@img019.png"
我尝试了您的代码,它对我有用。 我想您是来自Commons IO的IOUtils
类。
一个小评论。 您的方法put
需要定义为public,并带有注释@Put
以供Restlet直接调用;-)
希望对您有帮助,蒂埃里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.