2012-12-25 36 views
1

我尝试上传服务器中的图像通过画廊与其他条目,如名称DOB ID等,所有的条目上传,除了图像在PHP服务器,我没有站在哪里是我的错误,请帮助。建议任何其他代码plz告诉我。 这里是我的代码尝试上传图片在PHP服务器,但它可以发布。在Android

  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); 
+0

服务器端实施? –

+0

在这个时候我还没有 –

+0

我认为你的Java代码一切都很好,我想你在服务器端做了错误的事情。你如何将图像保存在服务器上? –

回答

2

如果ULR这样 http://iapaaaa.com/snapic/profileXml.php?user_id=2&name=joe&dob=2000-01-10&bio=bla血乳酸血乳酸&性别= 1个& PROFILE_STATUS = 0 &位置=英国& userfile的= user_photo.png

使用这个代码 BitmapFactory.Options选项=新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()); 
      } 
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.2httpclient.jar的罐子。你可以从Apache Site下载它。 只是提取包,你会得到lib目录。

相关问题