2015-04-15 2 views
0

Я пытаюсь сохранить файл, который отправляется через PUT в ресурс Restlet.Сохраните файл в методе putset Remlet

Завиток заявление выглядит следующим образом:

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" 

Я пробовал с кодом и работает для меня. Я полагаю, что вы класс IOUtils от Commons IO.

Один небольшой комментарий. Ваш метод put должен быть определен как общественные и с аннотацией @Put быть непосредственно вызываются Restlet ;-)

Надеется, что это помогает, Тьерри

Смежные вопросы