12

我有将图像上传到服务器的代码,它可以工作,

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();
                                }
                               }
                        });
                 }

但我有菜单图像编辑器。该编辑器是裁剪图像,那是代码返回位图值,如下所示

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;

我想问一下,如何使用参数位图将图像发送到服务器。如您所知,我发送图像的代码现在使用参数路径(字符串)。

4

2 回答 2

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

然后将此编码图像作为 a 发送,String并且在您的服务器中,您需要对其进行解码才能获取图像本身。

于 2012-10-09T09:20:10.917 回答
5

*使用三个库
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();
            }
于 2014-11-21T11:55:17.220 回答