Ich verwende ein einfaches Servlet, das Dokumentinhalt von der Datenbank als Byte-Array zurücksendet. Ich möchte einen Inhalt festlegen type so dass es eine entsprechende Erweiterung hat, während es über einen Aufruf von doGet () abgerufen wird.
Ich habe den Typ des Dokuments als Metadaten in der Datenbank gespeichert (z. B. png, gif, png, xls, docx ...).
Was muss ich als Inhaltstyp festlegen, damit die Dateierweiterung beibehalten wird?
Verwenden Sie ServletContext#getMimeType()
, um den Mime-Typ basierend auf dem Dateinamen zu erhalten.
Der Servletcontainer stellt normalerweise bereits eine standardmäßige Mime-Typ-Zuordnung in seiner eigenen web.xml
bereit. Wenn Sie einen anderen überschreiben oder hinzufügen möchten, fügen Sie ihn als neue Mime-Zuordnungen in webapps web.xml
ein. ZB
Setze es als Content-Type
response header:
Die Datei wird mit dem Namen "doc" heruntergeladen. Wie lege ich den Dateinamen des Servlets für die heruntergeladenen Daten fest.
Fügen Sie es der Servlet-URL hinzu, da einige Browser wie MSIE das filename
-Attribut der Inhaltsdisposition ignorieren.
Wenn das Servlet einem URL-Muster von /download/*
zugeordnet ist, können Sie es wie folgt abrufen
Setze es schließlich auch in den Header Content-Disposition
, um normale Browser glücklich zu machen:
Wenn Sie Dateinamen nicht in der Datenbank, sondern eher in IDs speichern, verwenden Sie sie stattdessen als Dateinamen.
%Vor%Und dann im Servlet
%Vor%
- Was sollte ich als Inhaltstyp festlegen, damit die Datei beibehalten wird? Erweiterung?
Sie können die Methode setContentType des Response-Objekts verwenden, um den Mime festzulegen. zB:
%Vor%2.Die Datei wird mit dem Namen "doc" heruntergeladen, wie stelle ich das ein Dateiname im Servlet für die Daten heruntergeladen werden
Sie können den Dateinamen der heruntergeladenen Datei festlegen, indem Sie den richtigen Header festlegen. Sie können Content-Disposition wie folgt verwenden:
%Vor%