Рестлет и использование / хранение файлов
Как можно обработать использование вложения из запроса POST/PUT клиента на стороне сервера и сохранить этот файл в локальной папке, используя Restlet?
Мои мысли таковы:
Настройте сервер следующим образом:
new MailServerComponenet.start();
public MailServer(){
getServers().add(Protocol.HTTP, 8111);
getDefaultHost().attachDefault(new MailServer());
server.getContext().getParameters().set("tracing", "true");
}
@Put
public void store(Form form){
// *And here is where I am not sure*
}
Спасибо за понимание и помощь заранее.
1 ответ
Вот следующие шаги, которые вы должны выполнить, чтобы реализовать приложение Restlet:
Создать компонент
Component component = new Component();
Создайте приложение и прикрепите его к компоненту
component.getServers().add(Protocol.HTTP, 8182); Application application = new MyApplication(); component.getDefaultHost().attachDefault(application); component.start();
Настройте приложение в методе
createInboundRoot
(создайте роутер и подключите к нему ресурс сервера)public class MyApplication extends Application { @Override public Restlet createInboundRoot() { Router router = new Router(); router.attach("/test", MyServerResource.class); return router; } }
Реализуйте ресурсы сервера
public class MyServerResource extends ServerResource { @Post public Representation handlePost(Representation repr) { (...) } }
Теперь глобальный фрейм реализован, мне было бы интересно, как бы вы отправляли контент в Restlet. Это простой двоичный контент в полезной нагрузке или многокомпонентный контент?
Двоичный контент
@Post public Representation handlePost(FileRepresentation fileRepr) { fileRepr.write(new FileOutputStream( new File("/tmp/myfile.txt"))); return null; }
Составной контент. Вы можете посмотреть на этот ответ в этом случае: Загрузка файла с описанием в Restlet
Надеюсь, это поможет тебе, Тьерри