在Restlet put方法中存储文件

时间:2015-04-15 06:29:53

标签: java restlet put

我正在尝试存储通过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确实包含已发送文件的名称,而不是已发送的图像数据。

知道如何获取文件内容吗?

1 个答案:

答案 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直接调用; - )

希望它可以帮到你, 亨利