[英]Java - Upload OutputStream as HTTP File Upload
我有一個寫入OutputStream
的遺留應用程序,我希望將此流的內容作為文件上載到Servlet。 我已經使用JMeter測試了使用commons-fileupload
的Servlet,它運行得很好。
我會使用Apache HttpClient,但它需要一個File
而不僅僅是一個輸出流。 我不能在本地寫一個文件; 如果有一些內存中的File
實現可能可行嗎?
我嘗試過使用HttpURLConnection
(下面),但服務器響應“MalformedStreamException:Stream意外結束”。
URL url = new URL("http", "localhost", 8080, "/upload");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
String boundary = "---------------------------7d226f700d0";
connection.setRequestProperty("Content-Disposition", "form-data; name=\"file\"");
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary="+boundary);
connection.setRequestProperty("Accept", "application/json");
connection.setRequestMethod("POST");
connection.setChunkedStreamingMode(0);
connection.connect();
OutputStream out = connection.getOutputStream();
byte[] boundaryBytes =("--" + boundary + "\r\n").getBytes();
out.write(boundaryBytes);
//App writes to outputstream here
out.write("\r\n".getBytes());
out.write(("--"+boundary+"--").getBytes());
out.write("\r\n".getBytes());
out.flush();
out.close();
connection.disconnect();
該的PostMethod允許您設置一個RequestEntity,這是一個可以實現一個接口。 您只需要適當地實現RequestEntity.writeRequest
方法。
或者,如果您希望HttpClient為您處理多部分內容,您可以將MultipartRequestEntity與自定義部件一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.