2012-02-22 5 views
2

Я искал решение для решения проблемы и столкнулся с несколькими и разными настройками, но я не могу заставить его работать правильно.Android: отправка изображения через POST

Вот что у меня есть.

Редактировать: Ошибка на стороне сервера, которую я получаю, составляет 500. Я предполагаю, что это потому, что данные, которые я отправляю, слишком велики для одного запроса или находятся в неправильном формате.

    ByteArrayOutputStream bao = new ByteArrayOutputStream(); 

        bm.compress(Bitmap.CompressFormat.JPEG, 90, bao); 

        byte [] ba = bao.toByteArray(); 

        String ba1=Base64.encodeToString(ba,Base64.URL_SAFE); 

        mParams.add(new BasicNameValuePair("story[image]",ba1)); 

    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost(mPath); 
    // Add your data 
    try 
    { 
     httppost.setHeader("Authorization", Base64.encodeToString(new StringBuilder(sssss).append(":").append(ssssss).toString().getBytes("UTF-8"), Base64.URL_SAFE|Base64.NO_WRAP)); 
     httppost.setEntity(new UrlEncodedFormEntity(mParams)); 
     HttpResponse rH = httpclient.execute(httppost); 
     Log.v(TAG, "response: " + rH.toString()); 
     int f = 0; 
    } 
    catch(HttpResponseException e) 
    { 
     Log.e(TAG, e.getLocalizedMessage()); 
     Log.e(TAG, e.getMessage()); 
     e.printStackTrace(); 
    } 

ответ

5

Это то, что я сделал вчера, может быть, это поможет

 Bitmap bitmapOrg = images.get(0); 

     ByteArrayOutputStream bao = new ByteArrayOutputStream(); 

     String upload_url = prepare_upload_url(); 
     bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao); 

     byte[] data = bao.toByteArray(); 

     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost postRequest = new HttpPost(upload_url); 
     MultipartEntity entity = new MultipartEntity(
       HttpMultipartMode.BROWSER_COMPATIBLE); 

     //Set Data and Content-type header for the image 
     entity.addPart("file", 
       new ByteArrayBody(data, "image/jpeg", "file")); 
     postRequest.setEntity(entity); 
     try { 

      HttpResponse response = httpClient.execute(postRequest); 
     //Read the response 
      String jsonString = EntityUtils.toString(response.getEntity()); 
      Log.v(ProgramConstants.TAG, "after uploading file " 
        + jsonString); 

     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

Где бы вы установили данные POST. EG: Я пытаюсь установить значение истории [image] в сообщении как данные изображения. – TylerKinkade

+0

Ах. Я добавил массив байтов изображения с именем файла, называемым «файл». entity.addPart («файл», новый ByteArrayBody (данные, «образ/jpeg», «файл»)) Я использую это для отправки изображения на сервер App Engine –

+0

Спасибо человеку! Покачала головой об этом. :) – TylerKinkade

Смежные вопросы