Краткий пример загрузки файла через Java lib Apache Commons - PullRequest
2 голосов
/ 13 сентября 2010

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

Итак ... вопрос вкратце...

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

1 Ответ

6 голосов
/ 13 сентября 2010

Из 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, порядок установки заголовков запроса не имеет значения, если они все установлены до того, как вы установите тело запроса.
...