Dalam pendekatan saya, saya menggunakan org.Apache.http.entity.mime.MultipartEntity dan menambahkan nama file gambar sebagai FileBody
entity.addPart("image_" + photo_count, new FileBody(
new File(failed.getFilenames()[i])));
lalu berikan MultiPartEntity ke HttpPost. Saya belum memposting kode lengkap karena mendapat banyak komentar dan kode yang tidak terkait dengan pertanyaan Anda. Dengan melewatkan gambar sebagai FileBody, dimungkinkan untuk mendapatkan gambar menggunakan kode penanganan file stand php (Lihat Di Bawah).
if ((!empty($_FILES[$im])) && ($_FILES[$im]['error'] == 0)) {
$newname = dirname(__FILE__) . '/../photo/' . $campaign . '/' . $fn;
if (!file_exists($newname)) {
if (move_uploaded_file($_FILES[$im]['tmp_name'], $newname)) {
//$resp = "The file " . $fn . " has been uploaded";
//printf("%s", $resp);
} else {
$error = $error + 1;
}
}else{
//image file already exists
$error = $error + 1;
}
} else {
$error = $error +1;
}
Untuk tujuan saya, kode di atas berada dalam satu lingkaran karena saya berurusan dengan banyak gambar
$im = 'image_' . $i;
mengacu pada nama gambar dalam entitas.
Maaf untuk posting pendek saya terburu-buru untuk waktu.
Lupa menyebutkan alasan mengapa saya tidak menggunakan pendekatan string Base64 karena membatasi ukuran gambar yang dapat Anda kirim. Pendekatan FileBody dalam entitas adalah pendekatan terbaik yang saya temukan.
Anda dapat melewatkan string menggunakan:
entity.addPart("address", new StringBody(failed[0].getAddress()));
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 20000); // Timeout
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("address", new StringBody("my address example"));
entity.addPart("image_0", new FileBody(new File("filename of image")));
HttpPost post = new HttpPost("server address");
post.setEntity(entity);
HttpResponse response = client.execute(post);