Принудительная загрузка браузером файла 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
файл? Мой кусок кода правильный?