Saya akan berasumsi bahwa Anda tahu jalur dan nama file dari gambar yang ingin Anda unggah. Tambahkan string ini ke NameValuePair
penggunaan Anda image
sebagai nama kunci.
Mengirim gambar dapat dilakukan menggunakan pustaka HttpComponents . Unduh biner HttpClient terbaru (saat ini 4.0.1 ) dengan paket dependensi dan salin apache-mime4j-0.6.jar
dan httpmime-4.0.1.jar
ke proyek Anda dan tambahkan mereka ke path Java build Anda.
Anda perlu menambahkan impor berikut ke kelas Anda.
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;
Sekarang Anda dapat membuat MultipartEntity
untuk melampirkan gambar ke permintaan POST Anda. Kode berikut menunjukkan contoh bagaimana melakukan ini:
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();
}
}
Saya harap ini sedikit membantu Anda ke arah yang benar.
FileBody
- 2 dengan Tipe Mime yang Anda inginkan. Misalnya:new FileBody(new File (nameValuePairs.get(index).getValue()), "image/jpeg")
Sejak
MultipartEntity
telah ditinggalkan . Silakan lihat kode di bawah ini.sumber
The loopj perpustakaan dapat digunakan lurus ke depan untuk tujuan ini:
http://loopj.com/
sumber
Saya banyak berjuang untuk mengimplementasikan pengiriman gambar dari klien Android ke servlet menggunakan httpclient-4.3.5.jar, httpcore-4.3.2.jar, httpmime-4.3.5.jar. Saya selalu mendapat kesalahan runtime. Saya menemukan bahwa pada dasarnya Anda tidak dapat menggunakan toples ini dengan Android karena Google menggunakan versi HttpClient yang lebih lama di Android. Penjelasannya di sini http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html . Anda perlu mendapatkan toples httpclientandroidlib-1.2.1 dari pustaka http-client android . Kemudian ubah impor Anda dari or.apache.http.client ke ch.boye.httpclientandroidlib. Semoga ini membantu.
sumber
Saya biasanya melakukan ini di utas yang menangani respons json:
Jika Anda perlu melakukan transformasi pada gambar, Anda ingin membuat Drawable alih-alih Bitmap.
sumber