2017-06-09 1 views
2

Beim Hochladen doc-Datei (Beispiel test.doc) zum Server (Unix-Maschine), ich bin mit apache commons Glas, die mir FormFile Instanz auf Server-Seite gibt die ist, mit alle Daten in Byte-Array-Form.MS Word-Datei herunterladen Problem in Servlet von Unix-Server auf Windows

Wenn ich das gleiche Byte-Array zu Antwort-Output-Stream schreiben und es an den Browser senden, um die gleiche Datei herunterzuladen, wird seltsame Inhalte angezeigt. Ich erhalte eine Pop-Codierung zu wählen, in dem Ich mag würde die Daten und seltsame Daten zu sehen sind in diesem doc.The Inhaltstyp dargestellt werden wie folgt eingestellt:

response.setContentType("application/msword"); 
response.setHeader("Content-Disposition", "attachment;filename=test.doc"); 

Ich denke, dass, während Daten auf Ausgabestrom schreiben Metadaten, die sich auf die doc-Datei beziehen, werden ebenfalls geschrieben, wodurch dieses Problem verursacht wird.

Gibt es etwas Bestimmtes für doc oder docx Dateiformate, das getan werden muss, damit die Datei im richtigen Format ist und ich korrekte Daten sehen kann, die ich hochgeladen habe oder mir etwas fehlt?

Jede Hilfe wäre willkommen.

Vielen Dank im Voraus.

Lassen Sie mich wissen, wenn weitere Informationen erforderlich sind.

+1

sind Dateien; Es wurde keine Manipulation am Dateiinhalt vorgenommen. Es ist wahrscheinlicher, dass Sie ein Problem mit Ihren Inhaltseinstellungen haben, wenn Sie es herunterladen. –

+0

Wie liest du den Input-Stream beim Hochladen? Wie schreiben Sie den Ausgabestrom beim Herunterladen? –

+0

Ich habe die Lösung dafür gefunden. Es gab nichts Falsches beim Lesen und Schreiben der Daten in die Datei. Stattdessen war das Problem mit einem der Filter, der mit der Antwort rumhing. Ich schätze alle bisherigen Antworten sehr. Danke an alle. –

Antwort

0

Es ist nicht eine Lösung für Ihr Problem sein kann, weil ich keinen Test herumlaufen haben. Aber um zu überprüfen, die richtigen Mime-Typen finden Sie auf diesen Link:

https://technet.microsoft.com/en-us/library/ee309278(office.12).aspx

Aktualisiert:

können Sie Antworttyp als Arraybuffer verwenden und den Inhalt als Blob gesetzt.

Blob([response], {type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'}); 

Oder könnte dies funktionieren

response.setContentType("application/x-msdownload"); response.setHeader("Content-disposition", "attachment; filename="+ fileName);

Verwandte Themen