Краткий пример загрузки файла через Java lib Apache Commons

[править] Я удалил свой запутанный и плохо сформированный вопрос, чтобы он не отвлекал от очень аккуратного и правильного ответа ниже. Учитывая (удивительно) сложность поиска онлайнового примера для выполнения этой невероятно распространенной задачи, я надеюсь, что Йони получит еще несколько положительных отзывов за свой ответ.

Итак... вопрос в двух словах...

Как использовать Apache.Commons для загрузки файла в какой-либо пункт назначения. Я использую его в Android и загружаю в скрипт PHP, но, очевидно, он может работать с любой программой Java и любым слушателем на основе HTTP.

1 ответ

Решение

Из API MultipartRequestEntity:

File f = new File("/path/fileToUpload.txt");
PostMethod filePost = new PostMethod("http://host/some_path");
Part[] parts = {
    new StringPart("param_name", "value"),
    new FilePart(f.getName(), f)
};
filePost.setRequestEntity(
    new MultipartRequestEntity(parts, filePost.getParams())
);
HttpClient client = new HttpClient();
int status = client.executeMethod(filePost);
  • Я не думаю, что вам нужна часть размещения контента, которая используется для другого направления (когда браузер загружает файл и должен знать, что с ним делать).
  • getParams.setParameter не является обязательным. Вы также можете установить его непосредственно в экземпляре HttpClient.
  • AFAIK, порядок установки заголовков запроса не имеет значения, если они все установлены перед тем, как задавать тело запроса.
Другие вопросы по тегам