Ich gehe davon aus, dass Sie den Pfad und den Dateinamen des Bildes kennen, das Sie hochladen möchten. Fügen Sie diese Zeichenfolge zu Ihrer NameValuePair
Verwendung image
als Schlüsselname hinzu.
Das Senden von Bildern kann mithilfe der HttpComponents-Bibliotheken erfolgen . Laden Sie die aktuelle Httpclient (derzeit 4.0.1 ) binär mit Abhängigkeiten Paket und kopieren apache-mime4j-0.6.jar
und httpmime-4.0.1.jar
in Ihr Projekt und fügen Sie sie in Ihre Java - Build - Pfad.
Sie müssen Ihrer Klasse die folgenden Importe hinzufügen.
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;
Jetzt können Sie ein erstellen MultipartEntity
, um ein Bild an Ihre POST-Anfrage anzuhängen. Der folgende Code zeigt ein Beispiel dafür:
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();
}
}
Ich hoffe das hilft dir ein bisschen in die richtige Richtung.
FileBody
mit Ihrem gewünschten Mime-Typ hinzu. ZB:new FileBody(new File (nameValuePairs.get(index).getValue()), "image/jpeg")
Da
MultipartEntity
wurde veraltet . Bitte beachten Sie den Code unten.quelle
Die loopj- Bibliothek kann für diesen Zweck direkt verwendet werden:
http://loopj.com/
quelle
Ich hatte große Probleme beim Implementieren der Veröffentlichung eines Images vom Android-Client zum Servlet mithilfe von httpclient-4.3.5.jar, httpcore-4.3.2.jar, httpmime-4.3.5.jar. Ich habe immer einen Laufzeitfehler bekommen. Ich habe herausgefunden, dass Sie diese Gläser grundsätzlich nicht mit Android verwenden können, da Google eine ältere Version von HttpClient in Android verwendet. Die Erklärung finden Sie hier http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html . Sie müssen das Glas httpclientandroidlib-1.2.1 aus der http-Client-Bibliothek von Android herunterladen . Ändern Sie dann Ihre Importe von or.apache.http.client in ch.boye.httpclientandroidlib. Hoffe das hilft.
quelle
Normalerweise mache ich das in dem Thread, der die JSON-Antwort verarbeitet:
Wenn Sie Transformationen für das Bild durchführen müssen, möchten Sie anstelle einer Bitmap ein Drawable erstellen.
quelle