簡體   English   中英

Java - 將OutputStream上傳為HTTP文件上載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM