2011-10-20 10 views
7

Tengo un URI en una imagen que se ha tomado o seleccionado de la Galería que quiero cargar y comprimir como JPEG con un 75% de calidad. Creo que lo he logrado con el siguiente código:ByteArrayOutputStream a un FileBody

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

No es que me he metido en un ByteArrayOutputStream llamada bos Necesito a continuación, añadir a un MultipartEntity con el fin de HTTP POST a un sitio web. Lo que no puedo entender es cómo convertir el ByteArrayOutputStream en un FileBody.

Respuesta

14

Utilice un ByteArrayBody lugar (disponible desde HTTPClient 4.1), a pesar de su nombre que se necesita un nombre de archivo, también:

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

Si le pegan con HTTPClient 4.0, utilice InputStreamBody lugar:

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

(Ambas clases también tienen constructores que toman una cadena de tipo MIME adicional)

2

espero que pueda ayudar alguien, se puede mencionar el tipo de archivo como "image/jpeg" en FileBody de la siguiente código

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()); 

necesidad de añadir archivos jar httpclient-4.2.2.jar, httpmime-4.2.2.jar en su proyecto .

Cuestiones relacionadas