在Restlet put方法中存储文件

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 的 class IOUtils

一个小评论。您的方法 put 需要定义为 public 并带有注解 @Put 才能被 Restlet 直接调用 ;-)

希望对你有帮助, 蒂埃里