2013-03-14 41 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); 
相關問題