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