2014-07-02 6 views
6

Mam poniżej kod, aby przesłać obraz z Androida na serwer sieciowy.Przesyłanie plików z Androidem Typ zawartości do obrazu

Działa dobrze, z wyjątkiem tego, że otrzymany obraz jest strumieniem zawartości typu Oktet i potrzebuję go, aby był obrazem treści. Masz pomysł, jak ustawić typ zawartości?

public void sendImage(final Bitmap mBitmap, final String caption, final WebListener webListener) { 
    Thread thread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      AQuery aq = new AQuery(smApplication); 
      Map<String, Object> params = new HashMap<String, Object>(); 
      params.put("file_name", "name" + (int) (Math.random() * 1000)); 
      params.put("caption", caption); 
      ByteArrayOutputStream blob = new ByteArrayOutputStream(); 
      mBitmap.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, blob); 
      byte[] bitmapdata = blob.toByteArray(); 
      params.put("photo", bitmapdata); 
      AjaxCallback<JSONObject> ac = new AjaxCallback<JSONObject>() { 
       @Override 
       public void callback(String url, JSONObject object, AjaxStatus status) { 
        if (status.getCode() == 200) { 
         try { 
          String success = object.getString("success"); 
          if (success.equals("postCreated")) { 
           webListener.onCompleted(true); 
          } 
         } catch (JSONException e) { 
          webListener.onServiceError(e.getMessage()); 
         } 
        } else { 
         error(status.getError(), webListener); 
        } 
       } 
      }; 
      ac.header("Authorization", "Token token=" + Cache.getInstance().getDeviceKey()); 
      aq.ajax(HOST + API + "posts", params, JSONObject.class, ac, "photoCb"); 
     } 
    }); 
    thread.start(); 
} 
+0

Znalazłeś rozwiązanie tego? – user1553777

+0

To jest trudne. Miałem to w javascript dla aplikacji Windows 8. – Simon

+0

Czy próbowałeś ustawić typ zawartości w nagłówku po ustawieniu autoryzacji? ac.header ("Content-Type", "application/png"); – isma3l

Odpowiedz

0

Dodaj tę linię TOO:

ac.header("Content-Type", "image/png" charset=utf-8"); 

A po stronie serwera, należy zdefiniowany mime-mapping jako:

<mime-mapping> 
     <extension>png</extension> 
     <mime-type>image/png</mime-type> 
</mime-mapping> 
Powiązane problemy