Zmuszenie przeglądarki do pobrania pliku docx w JAVA generuje uszkodzony dokument

Korzystając z JAVA, próbuję zmusić przeglądarkę do pobrania plików.

Oto kod, którego aktualnie używam:

<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>

To działaprawie cóż, ale kiedy wymuszam pobieraniedocx dokument (MS Office 2007+), pobrany plik jest uszkodzony (przynajmniej tak mówi mi MS Office). Jeśli spróbuję otworzyć go bezpośrednio na serwerze, na którym są przechowywane, błąd nie pojawia się, co oznacza, że ​​problem przeszkadza podczas pobierania (a nie podczas przesyłania).

WedługIANA, typ MIME takiego pliku powinien byćapplication/vnd.openxmlformats-officedocument.wordprocessingml.document (1), ale określenie, że typ MIME nie rozwiązuje problemu.

Istnieje kilkautwory w sieci, ale żaden z nich nie działał dla mnie. Wydaje się, że jestrozwiązanie wASP.NET, ale nie znalazłem odpowiednikaJAVA.

Próbowałem również użyć typu MIMEapplication/vnd.ms-word (2) jak widziałemtam, ale pobrany plik jest nadal uszkodzony. Idem dla typu MIMEapplication/msword (3) zasugerował facettutaji dla ogólnego typu MIMEapplication/octet-stream (4) jak przedstawiono dalejto forum.

Następnie dla każdego z tych czterech typów MIME próbowałem zmienić nazwę pobranego pliku zmyfile.docx domyfile.doc (Niex już), ale problem nadal występuje.

Jak więc wymusić pobieranienieuszkodzony po pobraniu docx plik? Czy mój kod jest poprawny?

questionAnswers(1)

yourAnswerToTheQuestion