12 Stimmen

Wie sende ich ein Bild (Bitmap) an den Server in Android mit Multipart-Formular Daten json

Ich habe Code zum Hochladen von Bildern auf den Server und es funktioniert,

HttpEntity resEntity;

                HttpClient httpClient = new DefaultHttpClient();
                HttpPost post = new HttpPost(Constants.url_create_product);
                MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
                File file= new File(path);
                FileBody bin = new FileBody(file);

                reqEntity.addPart("phone", new StringBody(mPhoneNumber));
                reqEntity.addPart("prod_title", new StringBody(namapro));
                reqEntity.addPart("prod_price", new StringBody(hargapro));
                reqEntity.addPart("prod_desc", new StringBody(despro));
                reqEntity.addPart("prod_order", new StringBody(orderpro));
                reqEntity.addPart("prod_image", bin);

                post.setEntity(reqEntity);
                    HttpResponse response = httpClient.execute(post);
                resEntity = response.getEntity();
                String response_str = EntityUtils.toString(resEntity);
                Gson gson = new Gson(); 
                gson.toJson(response_str);
                 if (resEntity != null) {
                     Log.i("RESPONSE",response_str);
                     runOnUiThread(new Runnable(){
                            public void run() {
                                 try {
                                    Toast.makeText(getApplicationContext(),"Upload Complete. Check the server uploads directory.", Toast.LENGTH_LONG).show();
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                               }
                        });
                 }

Aber ich habe Menü Bild-Editor. Dieser Editor ist Ernte Bild und das ist Code zurückgeben Bitmap-Wert wie diese

Bundle extras = data.getExtras();

                if (extras != null) {               
                    photo = extras.getParcelable("data");

                    mImageView.setImageBitmap(photo);
                }

                File f = new File(mImageCaptureUri.getPath());            

                if (f.exists()) f.delete();

                break;

Ich möchte fragen, wie ich ein Bild mit dem Parameter bitmap an den Server senden kann. Wie Sie wissen, mein Code zu senden Bild jetzt verwenden Parameter Pfad (String).

38voto

Carnal Punkte 21314
ByteArrayOutputStream baos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);

Senden Sie dann dieses encodedImage als String und auf Ihrem Server müssen Sie es dekodieren, um das Bild selbst zu erhalten.

5voto

Pradeep Bishnoi Punkte 1805

*Verwendung von drei Bibliotheken
1.httpclient-4.3.6
2.httpcore-4.3.3
3.httpmime-4.3.6

            byte[] data = null;
            try {    
                String url = "http://andapp.freetings.in/testbyme.php?";
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url); 
                MultipartEntity entity = new MultipartEntity();

                if(imageBitmap!=null){
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    imageBitmap.compress(CompressFormat.JPEG, 100, bos);
                    data = bos.toByteArray();
                    entity.addPart("uplod_img", new ByteArrayBody(data,"image/jpeg", "test2.jpg"));
                }
                // entity.addPart("category", new StringBody(categoryname,"text/plain",Charset.forName("UTF-8")));
                entity.addPart("category", new StringBody(catid,"text/plain",Charset.forName("UTF-8")));
                entity.addPart("your_contact_no", new  StringBody(phone,"text/plain",Charset.forName("UTF-8")));
                entity.addPart("your_emailid", new StringBody(email,"text/plain",Charset.forName("UTF-8")));
                entity.addPart("your_name", new StringBody(name,"text/plain",Charset.forName("UTF-8")));

                httppost.setEntity(entity);
                HttpResponse resp = httpclient.execute(httppost);          
                HttpEntity resEntity = resp.getEntity();
                String string=EntityUtils.toString(resEntity);
                //  Log.e("sdjkfkhk", string);
                return resEntity;
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X