2 Stimmen

Url-Umleitung nach Klick und Herunterladen einer Datei

Mein Ziel ist es, meine Seite während des Herunterladens einer Excel-Datei umzuleiten oder zu aktualisieren:

Einzelheiten :

In meiner Anwendung sende ich eine dynamisch generierte Excel-Datei

setContentType("application/vnd.ms-excel; charset=windows-1254");
setCharacterEncoding(Constants.ENCODING);
setHeader("content-disposition", "attachment;filename=" + Constants.DEFAULT_EXCEL_FILE);
setHeader("Location","http://www.google.com");

Aber nachdem der Benutzer aufgefordert wurde, die Excel-Datei zu speichern oder zu öffnen, wurde er nicht auf google.com umgeleitet.

Ist es möglich, dies im Kopfbereich zu tun? Wenn ja, sagen Sie bitte wie.

Gracias.

0voto

Dead Programmer Punkte 12177

Können Sie nicht umleiten, da Sie den Antwortstrom gelöscht haben.

0voto

Vineet Reynolds Punkte 74302

Das ist schon deshalb nicht möglich, weil das definierte Verhalten des Browsers zwangsläufig vage ist. Mit anderen Worten, wenn der Browser das Vorhandensein von zwei Headern feststellt, von denen jeder möglicherweise widersprüchliche Anforderungen stellt, könnte das Verhalten darin bestehen, einfach einen zu ignorieren, anstatt beide zu befolgen - es ist Sache des Browserherstellers, dies zu definieren.

In diesem speziellen Fall stehen die HTTP-Header "Content-Disposition" und "Location" im Widerspruch zueinander, denn wenn der Browser zuerst den "Location"-Header verarbeiten würde, was zu einer Umleitung führen würde, würde der Endbenutzer nie zum Herunterladen der Datei aufgefordert werden.

Außerdem wäre der Location-Header nur bei einer HTTP 302-Antwort sinnvoll (ich glaube, dass dies bei Ihrer Anwendung nicht der Fall ist, nicht dass es hilfreich wäre).

0voto

Flatlin3 Punkte 1638

Sie könnten JavaScript für diese Aufgabe verwenden

<a href="myfile.txt" onclick='window.location = 'http://www.google.com/';"> File </a>

-1voto

Thakur Punkte 1850

Dies ist eine Möglichkeit, nicht im Kopfteil hart

private void DownloadFile()

{

//Download file here...

//Refresh this page.
this.Response.Redirect(Request.Url.AbsolutePath);

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X