Загрузка файла с помощью рестлета - PullRequest
1 голос
/ 23 января 2012

У меня очень большая проблема. Мне нужно загрузить файл с помощью службы отдыха. Моя проблема в том, что мне нужно загрузить файл вместе с некоторой информацией о файле ... все в одном запросе POST. Я использую Restlet.

До сих пор мне не нужно было загружать файл только информацию, и я делал это с помощью outputStreamWriter. Вот пример:

URL adminServerUrl = new URL(wwww....);
HttpURLConnection adminConnection = (HttpURLConnection) adminServerUrl.openConnection();
adminConnection.setRequestMethod("POST");
adminConnection.setDoOutput(true);
adminConnection.setDoInput(true);
adminConnection.setUseCaches(false);
adminConnection.setAllowUserInteraction(false);
OutputStream conOutput = adminConnection.getOutputStream();
        Writer writer = new OutputStreamWriter(conOutput, "UTF-8");
writer.write("&due_date=" + (project.getDueDate());
        writer.write("&source=" + project.getSourceLanguage());
writer.close();
        conOutput.close();

После этого я получил бы ответ, и это было все .... но теперь я должен загрузить файл, и я понятия не имею, как это сделать

1 Ответ

1 голос
/ 01 мая 2012

Я бы порекомендовал использовать API Restlet на стороне клиента и сервера, если это возможно. Это сделает ваш код проще.

Обычным решением будет использование многочастной загрузки файла, но это не обязательно и в целом более сложно. Сначала вы можете создать ресурс для загрузки с информацией / метаданными и отправить файл на дочерний ресурс.

На стороне клиента вы должны загрузить файл, используя FileRepresentation, и отправить его на целевой сервер, например, используя ClientResource # post (myFileRep).

На стороне сервера вы должны просто извлечь опубликованную сущность / представление и сохранить ее в локальном файле или в другом месте, снова используя ClientResource (file: /// схема URI работает с PUT).

...