Символ новой строки добавляется при загрузке изображения с URL

Мы пытаемся загрузить файл изображения с URL https://test.com/images/123.jpg

URL url = new URL("https://test.com/images/123.jpg");

InputStream inputStream = url.openStream();
byte[] buffer = new byte[2048];
pResponse.setContentType("application/octet-stream");
pResponse.setHeader("Content-Disposition","attachment;filename=\""123.jpg\"");

while ((inputStream.read(buffer)) != -1) {
    pResponse.getOutputStream().write(buffer);
}
pResponse.getOutputStream().flush();
pResponse.getOutputStream().close();

inputStream.close();

Загруженный файл поврежден. Нажмите здесь для скриншота. Когда я пытался открыть файл с помощью Notepad++, в начале файла добавлялась пустая строка.

При сохранении файла путем удаления пустой строки в начале файла, мы можем успешно открыть изображение.

Когда я изменил код и не записывал байты в pResponse.getOutputStream(), тогда загруженное изображение имеет пустую строку.

Итак, как мы можем удалить эту пустую строку или сбросить поток вывода на пустой

Пожалуйста, поправьте меня, если я ошибаюсь

С Уважением,

Джон

1 ответ

Я не знаю, почему добавляется пустая строка, но когда пытается создать тот же сценарий загрузки файла, я использовал этот код, и он работает нормально:

URL url = new URL("http://localhost:8080/HTMLCS/Images/OCR.PNG");
        BufferedImage img = ImageIO.read(url);
        File file = new File("C:\\Users\\username\\Desktop\\RegressionTests\\OCR.png");
        ImageIO.write(img, "png", file);

Это может или не может быть полезным для вас, но вы должны попробовать.
Пожалуйста, дайте мне знать, если я не смог правильно понять ваш вопрос.

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