Java - выгрузка OutputStream как загрузка HTTP-файла

У меня есть устаревшее приложение, которое пишет в OutputStreamи я хотел бы, чтобы содержимое этого потока было загружено в виде файла в сервлет. Я проверил сервлет, который использует commons-fileupload, используя JMeter, и он работает просто отлично.

Я бы использовал Apache HttpClient, но это требует File а не просто выходной поток. Я не могу написать файл локально; если была некоторая реализация в памяти File возможно, это может сработать?

Я пытался использовать HttpURLConnection (ниже), но сервер отвечает "MalformedStreamException: Поток неожиданно завершился".

        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 с пользовательской деталью.

Другие вопросы по тегам