Java-servlet-download mit dem Namen Sonderzeichen

Schreibe ich eine einfache Datei-download-servlet und ich bekomme keine richtigen Dateinamen. Versucht URLEncoding und MimeEncoding die mit dem Namen, wie gesehen in den vorhandenen Antworten, aber keiner von Ihnen arbeitete.

Das fileData-Objekt in den folgenden Codefragment enthält den mime-type, byte[] content und der Dateinamen muss mindestens die ISO-8859-2 Zeichensatz ISO-8859-1 ist nicht genug.

Wie kann ich meine browser zum anzeigen der heruntergeladenen Dateinamen korrekt?

Hier ist ein Beispiel für den Dateinamen: árvíztűrőtükörfúrógép.xls und das Ergebnis: árvíztqrptükörfúrógép.xls

  protected void renderMergedOutputModel(Map model, HttpServletRequest req, HttpServletResponse res) throws Exception {

    RateDocument fileData = (RateDocument) model.get("command.retval");
    OutputStream out = res.getOutputStream();
    if(fileData != null) {
        res.setContentType(fileData.getMime());
        String enc = "utf-8"; //tried also: ISO-8859-2

        String encodedFileName = fileData.getName();
            //also tried URLencoding and mime encoding this filename without success

        res.setCharacterEncoding(enc); //tried with and without this
        res.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName);
        res.setContentLength(fileData.getBody().length);
        out.write(fileData.getBody());
    } else {
        res.setContentType("text/html");
        out.write("<html><head></head><body>Error downloading file</body></html>"
                .getBytes(res.getCharacterEncoding()));
    }
    out.flush();
  }
Bitte geben Sie einige Beispiele, wie die Dateinamen Aussehen und was Sie stattdessen bekommen.
árvíztűrőtükörfúrógép.xls --> árvíztqrptükörfúrógép.xls
Ja, du hast Recht. Diese beiden Zeichen nicht in ISO-8859-1 nur in ISO-8859-2, verursacht viele Probleme für jeden ungarischen Entwickler.. 🙂

InformationsquelleAutor jabal | 2011-03-16

Schreibe einen Kommentar