Write-Ausgabestrom in neuem Fenster
Wie kann ich schreiben Sie einen Ausgabestrom in einem neuen browser-Fenster?
Derzeit, ich habe den code unten. Offensichtlich öffnet sich der stream im gleichen Fenster. Ich weiß, dass ich schreiben kann Ausgabestrom in eine Datei und öffnen Sie Sie in einem neuen Fenster, aber das ist keine option.
protected void openPDF(byte[] dados) {
HttpContext contexto = HttpContext.Current;
contexto.Response.Clear();
contexto.Response.AppendHeader("content-type", "application/pdf");
contexto.Response.AppendHeader("Expires","Mon, 26 Jul 1990 05:00:00 GMT");
contexto.Response.AppendHeader("Cache-Control","no-cache, must-revalidate");
contexto.Response.AppendHeader("Pragma","no-cache");
contexto.Response.Expires = -1;
contexto.Response.AppendHeader("Content-Disposition", "inline; filename=labels.pdf");
contexto.Response.AddHeader("content-length", dados.Length.ToString());
contexto.Response.OutputStream.Write(dados, 0, dados.Length);
contexto.Response.OutputStream.Flush();
contexto.Response.End();
}
InformationsquelleAutor none | 2009-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den link, der die Datei anfordert, muss angeben, dass Sie möchten, dass ein neues browser-Fenster.
Sobald die Anfrage an den server geschickt, der server antwortet einfach mit dem Ergebnis, dass es in das Fenster, das es angefordert, sofern Sie nicht angegeben haben ein anderes Ziel. Offensichtlich ändern, um eine Anlage würde Eingabeaufforderung für den download, aber Sie wissen, und möchten Sie es vermeiden.
Andere Lösungen wären zu schreiben, eine Antwort, die verwendet javascript ein neues Fenster öffnen, und führen Sie die eigentliche Anfrage um die Daten zu erhalten. Wenn Sie wissen, Sie will es immer in einem neuen Fenster, ich denke, ändern Sie den link angeben, wird ein neues Fenster ist eine bessere Lösung.
InformationsquelleAutor tvanfosson
Den server nicht, dass allein...
Server reagiert nur auf Anfragen und der client zeigt/nutzt diese Antworten wie Sie es für richtig hält.
Müssten Sie ändern den Ablauf der Anwendung, die auf client-Seite, indem er die client-Anfrage-diese PDF-Datei (oder andere Inhalte) in einem neuen browser-Fenster. Dies kann einfach getan, wenn z.B. das PDF-Format wird derzeit gesendet folgenden der Benutzer klickt auf einen link, durch hinzufügen a target='some_window_name' - Attribut des a-Elements.
In anderen Worten, durch die Zeit, die der server empfängt die Anfrage, ist es zu spät (*) ändern, um das 'Ziel' für die Antwort. So ist die Idee, um den client bei der Anforderung von/für die neue browser-Fenster.
(*) zu spät ist...
Nun... vielleicht nicht, hat jemand vielleicht eine clevere Art der Verpackung ist die Reaktion mit einigen javascript-enveloppe, die würde öffnen Sie ein neues browser-Fenster, und irgendwie (?) prime deren Inhalt mit dem Inhalt der PDF. Oder vielleicht einige andere trick... jedenfalls wäre dies wahrscheinlich etwas herbeigezogen... (im Vergleich mit nur mit dem browser Fragen, für die es in den richtigen Kontext)
InformationsquelleAutor mjv
Ist die Datei, die generiert wird, als Teil der einen postback? Wenn ja, es ist schwierig; möglicherweise die beste Wahl zu ändern
Content-Disposition
zuattachment
wird der Benutzer aufgefordert, mit den Öffnen/Speichern-dialog angezeigt, statt der Datei. Wenn nicht, mittarget="_blank"
im link ist die Lösung.Sie müssen ändern Sie die Taste in der webpart-zum aufrufen von Javascript ein neues Fenster zu öffnen. Die neuen Fenster müssen Sie eine neue Seite anfordern, und Sie müssen, um eine kontextbezogene Daten, die benötigt werden, um den Webdienst aufzurufen, der in den querystring. <input type="button" value="Klick mich" onclick="window.open('somepage.aspx?param=value "" />
InformationsquelleAutor batwad
wo Sie eine Datei generieren,können Sie diesen code verwenden, öffnen Sie eine lokale Datei in einem neuen Fenster
InformationsquelleAutor JamesChen