2009-07-07 8 views
2

Ich bin neu in der Web-Entwicklung, also entschuldige ich mich, wenn diese Frage noobish ist. Ich möchte eine Datei, die sich auf der Festplatte des Servers befindet, an den Benutzer senden, wenn sie angefordert wird (dh, eine HTTP-Anlage senden, um den "Speichern unter ..." - Dialog des Browsers auszulösen) in Javascript. Der Benutzer klickt auf eine Schaltfläche auf der Seite, der Server generiert eine angepasste Datendatei basierend auf einigen seiner Kontoeinstellungen (und anderen Parametern), und dann sollte der "Speichern unter ..." - Dialog erscheinen. Wie soll ich das in Javascript umsetzen?Verwenden von Javascript zum Senden eines HTTP-Anhangs an den Benutzer (Öffnen des Browsers Speichern unter ...)

edit: für Ihre Referenz, der Server Glassfish und Apache

Antwort

2

Jane,

Der Speichern-als-Dialog o erscheint nur beim Laden der Seite. Sie müssen Ihren Benutzer entweder direkt zu der Datei umleiten, die er speichern soll, oder zu einer serverseitigen Seite, die die Datei bereitstellt.

Sobald Sie die Adresse der Datei kennen, so etwas wie

window.location = http://yourserver.com/generatedfiles/file_2342342.txt 

Alternativ so etwas tun:

window.location = http://yourserver.com/getgeneratedfile.aspx?fileID=2342342 

..., die den Benutzer auf eine Seite umgeleitet würde, die Feeds die generierte Datei. Sie müssen dann die Inhaltsdisposition und den Dateinamen in der Kopfzeile angeben, die von dieser Seite kommt, wie in Gandalfs Antwort erwähnt.

Bearbeiten: Ah, Sie verwenden Apache. Wahrscheinlich wird es dann keine ASPX-Dateien mehr geben.

1

Stellen Sie die HTTP-Response-Header:

Content-Disposition: attachment; filename=myfile.txt 

Oder so etwas wie diese

<a href="javascript:void(0);" onclick="document.execCommand('SaveAs',true,'file.html');">Save this page</a> 
1

@ Arics Antwort ist korrekt; window.location führt jedoch dazu, dass Lade-/Entlade-Ereignisse ausgelöst werden, was für Ihre Anwendung möglicherweise nicht wünschenswert ist. In diesem Fall können Sie wahrscheinlich einen versteckten Iframe auf die URL verweisen, damit der Sicherungsdialog angezeigt wird, ohne den Status Ihrer Seite zu verlieren.

Auch "SaveAs" ist wahrscheinlich ein IE spezifischer Wert für document.execommand als es doesn't exist in Firefox.

Verwandte Themen