1

我尝试通过画廊将图像与名称 DOB id 等其他条目一起上传到服务器,除了 php 服务器中的图像外,所有条目都上传了,我不明白我的错误在哪里,请帮忙。建议任何其他代码请告诉我。这是我的代码

          Bitmap bitmapOrg = BitmapFactory.decodeFile(imageselectedPath1);
     ByteArrayOutputStream bao = new ByteArrayOutputStream();

            // Resize the image
            double width = bitmapOrg.getWidth();
            double height = bitmapOrg.getHeight();
            double ratio = 400 / width;
            int newheight = (int) (ratio * height);
            System.out.println("———-width" + width);
            System.out.println("———-height" + height);
            Log.d("width ", "width  " + width);
            Log.d("height ", "height " + height);
            bitmapOrg = Bitmap.createScaledBitmap(bitmapOrg, 400,
                    newheight, true);
            // Here you can define .PNG as well
            bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 99, bao);
            byte[] ba = bao.toByteArray();
            String ba1 = Base64.encodeBytes(ba);
            Log.d("uploading  ", "uploading   " + ba1);

            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

            nameValuePairs.add(new BasicNameValuePair("user_id", mSignMessg));
            nameValuePairs.add(new BasicNameValuePair("name", mname.getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("dob", mbirthday.getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("bio", mbio.getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("sex", mSexValue));
            nameValuePairs.add(new BasicNameValuePair("profile_status", "0"));
            nameValuePairs.add(new BasicNameValuePair("location", mlocation.getText().toString()));

            nameValuePairs.add(new BasicNameValuePair("image", ba1));
            Log.d("userfile", "userfile " + ba1);

            // nameValuePairs.add(new BasicNameValuePair("image”, ba1));

            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(
                        "http://iapptechnologies.com/snapic/profileXml.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                Log.d("nameValuePairs", "nameValuePairs " + nameValuePairs);

                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();

                // print responce
                outPut = EntityUtils.toString(entity);
                Log.i("GET RESPONSE—-", outPut);
                Log.d("GET RESPONSE—-", outPut);

                // is = entity.getContent();
                Log.e("log_tag ******", "good connection");
                System.out.println("gudconection");
                Log.d("god connection ", "gud connection ");

                bitmapOrg.recycle();

            } catch (Exception e) {

                Log.e("logCatch block***",
                        "Error in http connection " + e.toString());
                Log.d("log_catch block ******", "Error in http connection "
                        + e.toString());
            }

              Log.d("image_name","image_name "+image_name); 
4

2 回答 2

2

下面的代码将首先用分辨率压缩图像,然后MultiPart通过方法设置实体并通过网络发送数据POST

BitmapFactory.Options options = new BitmapFactory.Options();

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = true;
    // image path `String` where your image is located
    BitmapFactory.decodeFile(imagePath, options);

    int bitmapWidth = 400;
    int bitmapHeight = 250;

    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > bitmapHeight || width > bitmapWidth) {
        if (width > height) {
            inSampleSize = Math
                    .round((float) height / (float) bitmapHeight);
        } else {
            inSampleSize = Math.round((float) width / (float) bitmapWidth);
        }
    }

    options.inJustDecodeBounds = false;
    options.inSampleSize = inSampleSize;


    // you can change the format of you image compressed for what do you
    // want;
    // now it is set up to 640 x 480;

    Bitmap bmpScale = BitmapFactory.decodeFile(imagePath, options);

    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    // CompressFormat set up to JPG, you can change to PNG or whatever you
    // want;

    bmpScale.compress(CompressFormat.JPEG, 100, bos);

    byte[] data = bos.toByteArray();

    MultipartEntity entity = new MultipartEntity(
            HttpMultipartMode.BROWSER_COMPATIBLE);

    entity.addPart("avatar", new ByteArrayBody(data,"pic.jpg"
            ));

    //add your other name value pairs in entity.

    for (int i = 0; i < nameValuePairs.size(); i++) {
        entity.addPart(nameValuePairs.get(i).getName(), new StringBody(
                nameValuePairs.get(i).getValue()));
    }

    httppost.setEntity(entity);

    HttpResponse response = httpClient.execute(httppost);

编辑

哦..对不起,我忘了通知。是的,有一个名为httpmime-4.2.2and的罐子httpclient.jar。您可以从Apache 站点下载它。只需解压缩包,您将获得lib.

于 2012-12-25T05:49:54.760 回答
2

如果 ulr 像这样 http://iapaaaa.com/snapic/profileXml.php?user_id=2&name=joe&dob=2000-01-10&bio=bla bla bla&sex=1&profile_status=0&location=England&userfile=user_photo.png

使用此代码 BitmapFactory.Options options = new BitmapFactory.Options();

            // Decode bitmap with inSampleSize set
            options.inJustDecodeBounds = true;
            // image path `String` where your image is located
            BitmapFactory.decodeFile(selectedPath1, options);

            int bitmapWidth = 400;
            int bitmapHeight = 250;
            final int height = options.outHeight;
            final int width = options.outWidth;
            int inSampleSize = 1;
            if (height > bitmapHeight || width > bitmapWidth) {
                if (width > height) {
                    inSampleSize = Math.round((float) height
                            / (float) bitmapHeight);
                } else {
                    inSampleSize = Math.round((float) width
                            / (float) bitmapWidth);
                }
            }

            options.inJustDecodeBounds = false;
            options.inSampleSize = inSampleSize;

            Bitmap bmpScale = BitmapFactory.decodeFile(selectedPath1,
                    options);

            ByteArrayOutputStream bos = new ByteArrayOutputStream();

            // CompressFormat set up to JPG, you can change to PNG or
            // whatever you
            // want;

            bmpScale.compress(CompressFormat.JPEG, 100, bos);
            bmpScale.compress(CompressFormat.JPEG, 100, bos);

            byte[] data = bos.toByteArray();
            MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);
            // entity.addPart("avatar", new ByteArrayBody(data,mSignMessg +
            // "-" + new Random().nextInt(1000) + ".jpg"));

            entity.addPart("userfile", new ByteArrayBody(data, "pic.jpg"));
            // add your other name value pairs in entity.
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

            nameValuePairs
                    .add(new BasicNameValuePair("user_id", mSignMessg));
            nameValuePairs.add(new BasicNameValuePair("name", mname
                    .getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("dob", mbirthday
                    .getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("bio", mbio.getText()
                    .toString()));
            nameValuePairs.add(new BasicNameValuePair("sex", mSexValue));
            nameValuePairs
                    .add(new BasicNameValuePair("profile_status", "0"));
            nameValuePairs.add(new BasicNameValuePair("location", mlocation
                    .getText().toString()));

            // nameValuePairs.add(new BasicNameValuePair("image", ba1));
            Log.d("userfile", "userfile " + ba1);

            // nameValuePairs.add(new BasicNameValuePair("image”, ba1));

            for (int i = 0; i < nameValuePairs.size(); i++) {

                try {
                    entity.addPart(
                            nameValuePairs.get(i).getName(),
                            new StringBody(nameValuePairs.get(i).getValue()));
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    Log.d("respons", "image respons " + e);
                    e.printStackTrace();
                }

            }

            // httppost.setEntity(entity);
            //
            // HttpResponse response = httpClient.execute(httppost);

            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://technologies.com/snapic/profileXml.php");

                httppost.setEntity(entity);

                Log.d("nameValuePairs", "nameValuePairs " + nameValuePairs);

                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity1 = response.getEntity();

                // print responce
                outPut = EntityUtils.toString(response.getEntity());
                Log.i("GET RESPONSE—-", outPut);
                Log.d("GET RESPONSE—-", outPut);

                // is = entity.getContent();
                Log.e("log_tag ******", "good connection");
                System.out.println("gudconection");
                Log.d("god connection ", "gud connection ");

                bitmapOrg.recycle();

            } catch (Exception e) {

                Log.e("logCatch block***",
                        "Error in http connection " + e.toString());
                Log.d("log_catch block ******", "Error in http connection "
                        + e.toString());
            }
于 2012-12-25T08:05:39.750 回答