Java Upload OutputStream作为HTTP文件上载
我有一个写OutputStream
的遗留应用程序,我希望将此流的内容作为文件上传到Servlet。我已经使用JMeter测试了Servlet,它使用commons-fileupload
,并且工作得很好
我会使用ApacheHttpClient,但它需要一个File
,而不仅仅是一个输出流。我不能在本地写入文件;如果有一些File
的内存实现,那么这可能有效吗
我尝试使用HttpURLConnection
(如下),但服务器的响应是“格式错误的流异常:流意外结束”
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();
# 1 楼答案
PostMethod允许您设置RequestEntity,这是一个您可以实现的接口。您只需要适当地实现
RequestEntity.writeRequest
方法或者,如果您希望HttpClient为您处理多部分内容,您可以将MultipartRequestEntity与自定义部分一起使用