Я бы порекомендовал использовать API Restlet на стороне клиента и сервера, если это возможно. Это сделает ваш код проще.
Обычным решением будет использование многочастной загрузки файла, но это не обязательно и в целом более сложно. Сначала вы можете создать ресурс для загрузки с информацией / метаданными и отправить файл на дочерний ресурс.
На стороне клиента вы должны загрузить файл, используя FileRepresentation, и отправить его на целевой сервер, например, используя ClientResource # post (myFileRep).
На стороне сервера вы должны просто извлечь опубликованную сущность / представление и сохранить ее в локальном файле или в другом месте, снова используя ClientResource (file: /// схема URI работает с PUT).