ग्रीटिंग्स,एंड्रॉइड: फोटो अपलोड करें
मुझे अपने एंड्रॉइड फोन से एक फोटो अपलोड करने में परेशानी हो रही है।
public class Uploader{
public void upload(){
Log.i("EOH","hi...");
Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK)
{
Bundle extras = data.getExtras();
Bitmap b = (Bitmap) extras.get("data");
//what do do now with this Bitmap...
//how do I upload it?
}
}
}
तो मैं बिटमैप ख है लेकिन मैं आगे क्या करना है पता नहीं है, यहाँ कोड मैं एक तस्वीर का चयन करने के लिए संकेत करने के लिए उपयोग कर रहा हूँ है?
मैं पोस्ट अनुरोध भेजने के लिए निम्न कोड:
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("someValA", String.valueOf(lat)));
params.add(new BasicNameValuePair("someValB", String.valueOf(lng)));
new HttpConnection(handler).post("http://myurl.com/upload.php",params);
मैं इस के लिए एक बिटमैप छवि हुक कर सकते हैं? मैंने उम्र के लिए Google की खोज की है और इसे करने का एक अच्छा तरीका नहीं मिल रहा है।
मुझे उम्मीद है कि कोई मदद कर सकता है।
अग्रिम में बहुत धन्यवाद,
ठीक है मैं चिराग शाह के सुझाव की कोशिश की है।
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK)
{
Uri imageUri=data.getData();
List<NameValuePair> params = new ArrayList<NameValuePair>(1);
params.add(new BasicNameValuePair("image", imageUri.getPath()));
post("http://www.myurl.com/ajax/uploadPhoto.php",params);
}
}
जहां पद समारोह (के रूप में सिफारिश) है:
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);
Log.i("EOH",response.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
हालांकि myurl.com/ajax/uploadPhoto.php हो रही है कुछ भी नहीं यहाँ मेरी कोड है। मैंने uploadPhoto.php पर किसी भी गतिविधि को लॉग करने के लिए एक PHP लॉग बनाया है, और कुछ भी दिखाई नहीं दे रहा है। यह ध्यान देने योग्य है कि अगर मैं सिर्फ एक वेब ब्राउज़र में myurl.com/ajax/uploadPhoto.php टाइप करता हूं, तो यह ठीक से लॉग करता है।
कोई और सुझाव?
बहुत धन्यवाद,
मैंने पाया onclick कहा जाता है कि http पोस्ट एक Async कार्य से किया जाना चाहिए अन्यथा वे नहीं होगा। मैं कुछ पोस्टिंग और डेटा प्राप्त करने जैसा कुछ कर रहा हूं और पोस्ट को एआरआईएनसी कार्य में यूआरएल में लपेटने के लिए जरूरी है। (http://developer.android.com/reference/android/os/AsyncTask.html) – Tim