Принудительная загрузка браузером файла docx в JAVA приводит к повреждению документа

Используя JAVA, я пытаюсь заставить браузер загружать файлы.

Вот код, который я сейчас использую:

<code>response.reset();
response.resetBuffer();
response.setContentType(mimeType);
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

InputStream in = new FileInputStream(file);
OutputStream out = response.getOutputStream();
IOUtils.copy(in, out);

out.flush();
out.close();
in.close();
response.flushBuffer();
</code>

Оно работаетalmost хорошо, но при форсировании загрузкиdocx документ (MS Office 2007+), загруженный файл поврежден (по крайней мере, так говорит MS Office). Если я пытаюсь открыть его непосредственно на сервере, который их хранит, эта ошибка не появляется, что означает, что проблема действительно мешает при загрузке (а не при загрузке).

В соответствии сIANAMIME-тип такого файла должен бытьapplication/vnd.openxmlformats-officedocument.wordprocessingml.document (1), но указание, что тип MIME не решает проблему.

Есть несколькоtracks в Интернете, но ни один из них не работал для меня. Кажется, естьрешение вASP.NET, но я не нашел эквивалент вJAVA.

Я также пытался использовать тип MIMEapplication/vnd.ms-word (2) как я виделтам, но загруженный файл все еще поврежден. То же самое для типа MIMEapplication/msword (3) парень предложилВоти для общего типа MIMEapplication/octet-stream (4) как выдвинуто наэтот форум.

Затем для каждого из этих четырех типов MIME я попытался изменить имя загруженного файла сmyfile.docx вmyfile.doc (нетx больше), но проблема сохраняется.

Итак, как заставить загрузкуuncorrupted-when-downloaded docx файл? Мой кусок кода правильный?

Ответы на вопрос(1)

Ваш ответ на вопрос