Asumiré que conoce la ruta y el nombre de archivo de la imagen que desea cargar. Agregue esta cadena a su NameValuePair
uso image
como el nombre clave.
El envío de imágenes se puede hacer usando las bibliotecas HttpComponents . Descargue el último binario HttpClient (actualmente 4.0.1 ) con paquete de dependencias y copie apache-mime4j-0.6.jar
y httpmime-4.0.1.jar
a su proyecto y agréguelos a su ruta de compilación Java.
Deberá agregar las siguientes importaciones a su clase.
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;
Ahora puede crear una MultipartEntity
para adjuntar una imagen a su solicitud POST. El siguiente código muestra un ejemplo de cómo hacer esto:
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();
}
}
Espero que esto te ayude un poco en la dirección correcta.
FileBody
su Tipo Mime deseado. Por ejemplo:new FileBody(new File (nameValuePairs.get(index).getValue()), "image/jpeg")
Desde
MultipartEntity
ha quedado en desuso . Por favor vea el código a continuación.fuente
La biblioteca loopj se puede usar directamente para este propósito:
http://loopj.com/
fuente
Me costó mucho tratar de implementar la publicación de una imagen del cliente de Android en el servlet usando httpclient-4.3.5.jar, httpcore-4.3.2.jar, httpmime-4.3.5.jar. Siempre recibí un error de tiempo de ejecución. Descubrí que básicamente no puedes usar estos frascos con Android ya que Google está usando una versión anterior de HttpClient en Android. La explicación está aquí http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html . Debe obtener el jar httpclientandroidlib-1.2.1 de la biblioteca android http-client . Luego cambie sus importaciones de or.apache.http.client a ch.boye.httpclientandroidlib. Espero que esto ayude.
fuente
Usualmente hago esto en el hilo que maneja la respuesta json:
Si necesita hacer transformaciones en la imagen, querrá crear un Drawable en lugar de un Bitmap.
fuente