Festlegen des Dateinamens für eine heruntergeladene Datei in einer Rails-Anwendung

8

Ich habe eine Controller-Aktion, die es einem Benutzer ermöglicht, eine Datei mit der Erweiterung PPT herunterzuladen. Es ist nicht wirklich eine Powerpoint-Binärdatei, sondern nur ein XML-Format, das Powerpoint lesen kann. Die Datei wird von der Show-Aktion eines Controllers mit dem Namen ElementsController heruntergeladen, aber die Show-Aktion ist nicht wirklich im Controller definiert, es gibt jedoch eine Template-Datei dafür in app / views / elements / show.ppt.builder. Ich habe den Mime :: Type in config / initializers / mime_types.rb als solche registriert:

Mime::Type.register "multipart/related", :ppt

und die Datei wird ordnungsgemäß heruntergeladen und mit PowerPoint auf einem Windows-System geöffnet. Das Problem ist jedoch der Dateiname. Der Name der Datei ist 3.ppt, wobei drei der ID-Parameter in der URL ist. Ich würde gerne wissen, ob es eine Möglichkeit gibt, den Dateinamen etwas beschreibender als 3.ppt.

zu setzen

thx,

-C

    
Chris Drappier 05.03.2009, 22:55
quelle

3 Antworten

18

Sie können send_data verwenden:

%Vor%

Ein weiterer Vorteil ist, dass Sie x-sendfile verwenden können, so dass Sie nicht von mongrel / thin erwartet werden, während der Client die Daten herunterlädt.

Eine andere Möglichkeit wäre eine Route wie:

/elements/3/files/foo.ppt

Dann können Sie in Ihrer show-Methode für den FilesController den ID-Parameter senden.

    
jonnii 05.03.2009, 23:02
quelle
11

Ein mögliches Beispiel:

%Vor%     
Grant Neufeld 06.10.2010 19:07
quelle
3

Ok. Dies ist eine Antwort auf eine sehr alte Frage, aber ab Rails 3.2 ist der einfachste Weg, es wie folgt zu setzen:

%Vor%

Quell-API-Dokument

    
Roberto Trevisan 17.05.2013 14:24
quelle