मेरे दृष्टिकोण में मैंने org.apache.http.entity.mime.MultipartEntity का उपयोग किया और छवि फ़ाइल नाम को FileBody के रूप में जोड़ा
entity.addPart("image_" + photo_count, new FileBody(
new File(failed.getFilenames()[i])));
फिर MultiPartEntity को HttpPost पर पास करें। मैंने पूर्ण कोड पोस्ट नहीं किया है क्योंकि इसमें आपके प्रश्न से असंबंधित टिप्पणियों और कोड का भार है। इमेज को फाइलबॉडी के रूप में पास करके स्टैंड php फाइल हैंडलिंग कोड (नीचे देखें) का उपयोग करके इमेज प्राप्त करना संभव है।
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;
}
मेरे उद्देश्य के लिए उपरोक्त कोड लूप में था क्योंकि मैं कई छवियों से निपट रहा था
$im = 'image_' . $i;
इकाई में छवि के नाम को संदर्भित करता है।
संक्षिप्त पोस्ट के लिए क्षमा करें, मुझे समय के लिए जल्दी किया गया है।
इस कारण का उल्लेख करना भूल गया कि मैंने बेस 64 स्ट्रिंग दृष्टिकोण का उपयोग क्यों नहीं किया है, यह उस छवि के आकार को सीमित करता है जिसे आप भेज सकते हैं। इकाई में फाइलबॉडी दृष्टिकोण मुझे मिला सबसे अच्छा तरीका था।
आप स्ट्रिंग्स का उपयोग करके पास कर सकते हैं:
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);