2011-10-20 43 views
7

我有一個圖像,它是從我想要加載和壓縮爲75%質量的JPEG庫中選取的圖像。我相信我已經實現了用下面的代碼:ByteArrayOutputStream到一個文件體

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
Bitmap bm = BitmapFactory.decodeFile(imageUri.getPath()); 
bm.compress(CompressFormat.JPEG, 60, bos); 

不,我已經塞進了一個名爲bos我需要它,然後才能將其添加到MultipartEntityHTTP POST到網站ByteArrayOutputStream我無法弄清楚的是如何將ByteArrayOutputStream轉換爲FileBody。

回答

14

使用,儘管它的名字它需要一個文件名,太一ByteArrayBody,而不是(因爲了HTTPClient 4.1提供):

ContentBody mimePart = new ByteArrayBody(bos.toByteArray(), "filename"); 

如果你被卡住了HTTPClient 4.0,使用InputStreamBody代替:

InputStream in = new ByteArrayInputStream(bos.toByteArray()); 
ContentBody mimePart = new InputStreamBody(in, "filename") 

(這兩個類也有構造函數,需要一個附加的MIME類型字符串)

2

我希望它可以幫助某人時,你可以提到的文件類型,如FileBody「圖像/ JPEG」,如下代碼

HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost postRequest = new HttpPost(
        "url"); 
      MultipartEntity reqEntity = new MultipartEntity(
        HttpMultipartMode.BROWSER_COMPATIBLE); 
      reqEntity.addPart("name", new StringBody(name)); 
      reqEntity.addPart("password", new StringBody(pass)); 
File file=new File("/mnt/sdcard/4.jpg"); 
ContentBody cbFile = new FileBody(file, "image/jpeg"); 
reqEntity.addPart("file", cbFile); 
    postRequest.setEntity(reqEntity); 
      HttpResponse response = httpClient.execute(postRequest); 
      BufferedReader reader = new BufferedReader(
        new InputStreamReader(
          response.getEntity().getContent(), "UTF-8")); 
      String sResponse; 
      StringBuilder s = new StringBuilder(); 
      while ((sResponse = reader.readLine()) != null) { 
       s = s.append(sResponse); 
      } 

      Log.e("Response for POst", s.toString()); 

需要添加項目中的jar文件的HttpClient-4.2.2.jar,httpmime-4.2.2.jar 。

相關問題