27 Jan, 2012 15:59
Como enviar arquivos via HTTP no Android
O problema era fazer envio de arquivo como multipart/form-data-encoded e o Android não traz essa funcionalidade nativamente. Para fazer esse tipo de envio, descobri o MultipartEntity, que faz parte do HttpClient da Apache.
Antes de utilizá-lo, lembre-se de incluir os jars do HttpClient no seu projeto. Veja como o MultipartEntity funciona no exemplo abaixo:
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, boundary, Charset.defaultCharset());
byte[] data = //seu arquivo em array de bytes
ByteArrayBody b = new ByteArrayBody(data, "image/png", "nome_arquivo.png");
entity.addPart("file", b);
in.close();
Neste exemplo, vale lembrar que é preciso passar o boundary e seu arquivo em formato de array de bytes. Você pode passar seu arquivo de outras maneiras, além do ByteArrayBody, existem outros tipos como: AbstractContentBody, FileBody, InputStreamBody e StringBody. Veja a documentação aqui para saber mais detalhes.
Espero que a dica também seja útil a vocês!