2015-04-15 64 views
0

我試圖存儲通過PUT發送到Restlet資源的文件。在Restlet中存儲文件put方法

捲曲聲明看起來是這樣的:

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(); 
} 

這runns沒有錯誤。但由此產生的/Temp/media-file.png確實包含發送的文件的名稱而不是發送的圖像數據。

任何想法如何獲取文件內容?

回答

1

我不認爲這是你的Restlet代碼的問題,而是你用curl調用它的方式。

您忘記參數--data-binary中的「@」。您應該使用這樣的事情:

curl -X PUT "http://localhost:8080/EAIConfig/ri/media" --data-binary "@img019.png" 

我與你的代碼一個嘗試,它爲我工作。我想你是Commons IO的課IOUtils

一個小評論。你的方法put需要被定義爲公衆和註釋@Put通過的Restlet ;-)

希望它可以幫助你, 蒂埃裏

可以直接調用