Рестлет и использование / хранение файлов

Как можно обработать использование вложения из запроса 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

Надеюсь, это поможет тебе, Тьерри

Другие вопросы по тегам