Legen Sie den Dateinamen der Pdf-Datei, die gestreamt an den browser zurück
Ich habe ein Java-webapp erstellen von pdf-Dateien und streaming es zurück an den browser.
byte[] pdf = report.exportPdfToArray(user);
response.setContentType("application/pdf");
response.setHeader("content-disposition", "inline; filename=\"My.pdf\"");
outStream = response.getOutputStream();
outStream.write(pdf);
outStream.flush();
outStream.close();
Dem Bericht wird ausgeführt, und es wird zurück an den browser gesendet, aber ich kann nicht kontrollieren, den Namen der Datei, obwohl ich die content-disposition
.
Ich bin mit Jboss 4.2.1. Wissen Sie, was ich bin fehlt?
BEARBEITEN: So gibt es eine Möglichkeit, die Dateinamen, wenn die content-disposition inline?
Einige browser, nämlich den IE6, handeln lustig, auf diese manchmal. Ich hatte etwas hinzufügen wie ?f=/myfile.pdf am Ende des query-string zu machen, damit es funktioniert in IE6.
InformationsquelleAutor Atticus | 2011-01-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
content-disposition: attachment ....
Ich muss bestätigen, ich habe das gleiche problem, hinzufügen, es funktioniert nicht mit inline 'inline' (IE und Firefox)
Das pdf erhält den Namen des Servlets. Gibt es vielleicht eine Möglichkeit, die Seite (auf der die pdf angezeigt wird) Titel?
auf einigen IEs (kann mich nicht erinnern, welche version/OS genau), müssen Sie auch sicherstellen, dass in den Dateinamen hinzufügen, um ganz am Ende von Ihrem Standort oder einer Abfrage (was auch immer der Letzte). Beispiel /myscript.cgi/My.pdf. In diesem Fall Meine.pdf ist ein fake-file (myscript.cgi wird nicht ausgeführt). Dies ist möglich, wenn der Apache propperly konfiguriert. Oder alternativ können Sie eine fake-Abfrage-string an das script: /myscript.cgi?a=1&b=2&f=/Meine.pdf. Mit diesem hack angewendet, es soll auch die Arbeit mit content-disposition: inline ...
Der hack mit der /myscript.cgi/My.pdf gearbeitet. Danke!
InformationsquelleAutor Spliffster
MSIE verwenden, den letzten Teil des Pfades der Anfrage-URL (der Teil nach dem letzten
/
) als der Standard-Dateiname der Speichern Als Aktion. Es ignoriert diefilename
Attribut desContent-Disposition
header insgesamt. Alle anderen Browser behandeln, die header richtig.Müssen Sie ändern Sie das URL-Muster Ihrer PDF-servlet, um eine Pfad-Zuordnung. I. e. verwenden Sie nicht
/pdf
mit http://example.com/context/pdf, sondern/pdf/*
mit http://example.com/context/pdf/report.pdf. Auf diese Weise MSIE verwenden " - Bericht.pdf" statt "pdf" als Standard-Dateiname für die Speichern Als Aktion.InformationsquelleAutor BalusC
Habe ich versucht, eine Lösung in java, und es funktionierte.
InformationsquelleAutor kunal saxena
Ich kann nicht erkennen, einen Fehler. Haben Sie das Verhalten mit anderen Browsern/Leser?
Als der RFC, es ist nicht definiert, was der Kunde zu tun hat zu tun mit dem Dateinamen Informationen angezeigt, wenn inline...
es gibt jetzt Fehler in der oben genannten Umsetzung ist aber in den verschiedenen IE-Versionen und wie IE oder das acrobat-plugin verarbeitet den HTTP-Antwort-Header. Bisher hatte ich noch keine Probleme mit anderen Browsern.
InformationsquelleAutor mtraut
Es ist komisch, aber es kann nützlich sein, für jemanden, der(vielleicht kann mir jemand sagen, was ist falsch mit ihm):
Wenn ich zwei Header wie:
Funktioniert es nicht. Aber wenn ich die Reihenfolge ändern, funktioniert es wie erwartet:
InformationsquelleAutor Daniel Urbaniak
Gibt es Abhilfe, dies zu tun. Wir können iframe, wo der iframe wird geöffnet, in html-Seite, iframe halten wird der pdf-Bericht in der Erwägung, dass die html-Seite ist unabhängig von der iframe. Wir Bearbeiten können Sie den Titel der html-Seite, die hält iframe.
InformationsquelleAutor Hitender Mehandiratta