Я предполагаю, что вы знаете путь и имя файла изображения, которое хотите загрузить. Добавьте эту строку к своему NameValuePair
использованию в image
качестве имени ключа.
Отправку изображений можно выполнить с помощью библиотек HttpComponents . Загрузите последний двоичный файл HttpClient (в настоящее время 4.0.1 ) с пакетом зависимостей, скопируйте apache-mime4j-0.6.jar
иhttpmime-4.0.1.jar
в свой проект и добавить их в свой путь сборки Java.
Вам нужно будет добавить в свой класс следующие элементы импорта.
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
Теперь вы можете создать, MultipartEntity
чтобы прикрепить изображение к вашему запросу POST. В следующем коде показан пример того, как это сделать:
public void post(String url, List<NameValuePair> nameValuePairs) {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
try {
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
for(int index=0; index < nameValuePairs.size(); index++) {
if(nameValuePairs.get(index).getName().equalsIgnoreCase("image")) {
// If the key equals to "image", we use FileBody to transfer the data
entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File (nameValuePairs.get(index).getValue())));
} else {
// Normal string data
entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue()));
}
}
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost, localContext);
} catch (IOException e) {
e.printStackTrace();
}
}
Надеюсь, это немного поможет вам в правильном направлении.
FileBody
с желаемым типом Mime. Например:new FileBody(new File (nameValuePairs.get(index).getValue()), "image/jpeg")
Поскольку
MultipartEntity
был объявлен устаревшим . Пожалуйста, посмотрите код ниже.источник
Для этой цели можно использовать библиотеку loopj :
http://loopj.com/
источник
Я изо всех сил пытался реализовать отправку изображения из клиента Android в сервлет с использованием httpclient-4.3.5.jar, httpcore-4.3.2.jar, httpmime-4.3.5.jar. У меня всегда возникала ошибка выполнения. Я обнаружил, что в основном вы не можете использовать эти банки с Android, поскольку Google использует более старую версию HttpClient в Android. Объяснение здесь http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html . Вам необходимо получить банку httpclientandroidlib-1.2.1 из библиотеки http-client для Android . Затем измените импорт с or.apache.http.client на ch.boye.httpclientandroidlib. Надеюсь это поможет.
источник
Обычно я делаю это в потоке, обрабатывающем json-ответ:
Если вам нужно преобразовать изображение, вы захотите создать Drawable вместо Bitmap.
источник