2013-03-14 27 views
3

我们有文件的字节数组,我们希望将其作为文件上传。 FileBody只获取File作为参数,但我们有一个字节数组。在java中使用http客户端发送字节数组作为文件

一个解决方案是将字节数组保存到文件中,然后发送它 但它不适合我。

byte b[]= new byte[1000]; 
//fill b 
MultipartEntity form = new MultipartEntity(); 
form.addPart("file", new FileBody(/* b? */)); 

感谢。

回答

8

你可以做这样的事情

HttpClient client=null; 
byte b[]= new byte[1000]; 
MultipartEntity form = new MultipartEntity(); 
ContentBody cd = new InputStreamBody(new ByteArrayInputStream(b), "my-file.txt"); 
form.addPart("file", cd); 

HttpEntityEnclosingRequestBase post = new HttpPost("");//If a PUT request then `new HttpPut("");` 
post.setEntity(form); 
client.execute(post); 
+0

哪个版本使用?我已经使用4.0.1 – 2013-03-14 10:16:40

+1

任何方式,他都可以根据所用版本的语法使用'InputStreamBody' – 2013-03-14 10:17:59

+0

是的,你是对的 – MKT 2013-03-14 10:20:11

2

您可以使用ByteArrayBody代替InputStreamBody或FileBody。

HttpClient client=null; 
byte b[]= new byte[1000]; 
MultipartEntity form = new MultipartEntity(); 
ContentBody cd = new ByteArrayBody(b, "my-file.txt"); 
form.addPart("file", cd); 

HttpEntityEnclosingRequestBase post = new HttpPost(""); 
post.setEntity(form); 
client.execute(post); 
相关问题