Frage

Ich bin ein PDF von meinem Server herunterzuladen. Ich habe die „Content-Disposition“ als „Anhang“. Seine sehr feine Arbeit ist Firefox. Aber in IE8 seine als Inline angezeigt. Jeder schneller Zeiger um dieses Problem zu lösen?

Edit:

I Federn bin mit dem PDF-Byte-Array-Stream zu schreiben. Und JSP mit in der Client-Seite angezeigt werden soll.

Client-Seite:

Ich bin mit einem DHTML-Gitter und einen Tag zu halten. Der Code in dem Gitter sieht aus wie:

<a href='javascript:viewPDF(14)' target="_self" >View</a>

Ein Klick auf dieses die Methode ViewPDF wird aufgerufen. Ich hielt diesen Code in meiner Javascript-Datei.

function viewPDF(id) {
    $("#pdfID").val(id);
    $("#myform").attr('action',url);
    $("#myform").submit();
}

Server-Seite Code-Basis:

ByteArrayOutputStream reportBAOS = getPDFByteArrayStream();/*This is my method which returns the byte array stream.*/
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=testfile");
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
response.setHeader("Expires","0");
ServletOutputStream os = response.getOutputStream();
os.write(reportBAOS.toByteArray());
os.flush();
os.close();
War es hilfreich?

Lösung 2

verbrachte ich einen Tag, um herauszufinden, was das Problem war. Aber schließlich habe ich es.

Ich kann nicht sagen, die Evan Mulawski 's Antwort falsch. Ich habe versucht, mit seinem Code selbst. Aber keine Hilfe. Schließlich fand ich, dass die Dateinamenerweiterung fehlt. Ich habe gerade .pdf testdat angehängt.

response.setHeader("Content-Disposition","attachment; filename=testfile.pdf");

entfernt Jetzt habe ich folgendes.

response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
response.setHeader("Expires","0");

Auch mit dem obigen Code noch ich die PDF als Anhang bin immer.

Andere Tipps

In

diese Header:

header("Pragma: public"); //This one may work by itself.
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("200 HTTP/1.0 OK"); //HTTP 1.0 Compatible

Das wird Internet Explorer zwingen, die Datei vom Server zum Download bereit.

Ich stimme mit Multiplexer. Eigentlich ist das Problem, dass, wenn der ‚Dateiname‘ nicht mit Suffix enden, die mit Acrobat Reader in Windows zugeordnet ist. Sobald Sie „.pdf“ hinzufügen, es funktioniert ok.

Dann theres die pitfal von Cache-Control: no-cache die IE verursacht kotzen. Verwenden Cache-control: private zu verhindern Caching.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top