Wenn Sie den Browser zum Herunterladen einer docx-Datei in JAVA zwingen, wird ein beschädigtes Dokument generiert

Mit JAVA versuche ich, den Browser zum Herunterladen von Dateien zu zwingen.

Hier ist der Code, den ich derzeit benutze:

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

Es klapptfast na ja, aber beim erzwingen des Downloads einesdocx In einem Dokument (MS Office 2007+) ist die heruntergeladene Datei beschädigt (zumindest sagt mir dies MS Office). Wenn ich versuche, es direkt auf dem Server zu öffnen, auf dem es gespeichert ist, wird dieser Fehler nicht angezeigt. Dies bedeutet, dass das Problem beim Herunterladen (und nicht beim Hochladen) auftritt.

GemäßIANAsollte der MIME-Typ einer solchen Datei seinapplication/vnd.openxmlformats-officedocument.wordprocessingml.document (1)Wenn Sie jedoch diesen MIME-Typ angeben, wird das Problem nicht behoben.

Es gibt einigeSpuren im Web, aber keiner von ihnen hat für mich gearbeitet. Es scheint eine zu gebenLösung imASP.NET, aber ich habe das Äquivalent in nicht gefundenJAVA.

Ich habe auch versucht, den MIME-Typ zu verwendenapplication/vnd.ms-word (2) wie ich gesehen habeDort, aber die heruntergeladene Datei ist immer noch beschädigt. Identisch mit dem MIME-Typapplication/msword (3) schlug ein Typ vorHierund für den generischen MIME-Typapplication/octet-stream (4) wie vorgetragen aufdieses Forum.

Dann habe ich für jeden dieser vier MIME-Typen versucht, den Namen der heruntergeladenen Datei von zu ändernmyfile.docx zumyfile.doc (Neinx mehr), aber das Problem bleibt bestehen.

So erzwingen Sie den Download einesUnverdorben, wenn heruntergeladen docx Datei? Ist mein Code korrekt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage