Frage

Im suchend einen Weg, um eine XML-Datei zum Download bereit. Ich benutze:

file_path = 'folder/' + xml_name + '.xml'
send_file file_path, :type => "text/xml"

aber lädt mich immer eine leere Datei. Die Datei selbst hat 16 KB Daten in ihm ...

Warum?

Maechi

War es hilfreich?

Lösung 2

Problem gespeichert, aber ich weiß nicht, warum

File.open(file_path, 'r') do |f|
  send_data f.read, :type => "text/xml", :filename => "10.xml"
end

send_data arbeitet ... aber send_file nicht!

Andere Tipps

wahrscheinlich müssen Sie kommentieren Sie

config.action_dispatch.x_sendfile_header = "X-Sendfile"

in production.rb

finden Sie unter http: // vijaydev. wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/ für Erklärungen

Wie Eugene sagt in seiner Antwort, in einer Produktionsumgebung Rails Apache lassen wird oder die aktuelle Datei für Sie mit x-sendfile nginx senden, wenn Sie Sie äußern müssen nicht entweder von ihnen als Infrastruktur für Schienen verwenden out die Linie in der

vorgeschlagen
  

config / Umgebungen / production.rb Datei.

# config.action_dispatch.x_sendfile_header = "X-Sendfile"

Sie müssen sendfile Verwendung in ./config/environments/production.rb aktivieren:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

Wenn diese Zeile nicht vorhanden (oder kommentiert out) ist, dann Rails werden die Datei korrekt senden, aber nicht durch Apache.

Wenn Sie immer 0-Byte-Dateien, dann stellen Sie sicher, dass Sie mod_xsendfile installiert haben, die sich von https verfügbar: // tn123.org/mod_xsendfile

Laden Sie die Quelldatei (mod_xsendfile.c) und kompilieren (apxs -cia mod_xsendfile.c). Sie wollen wahrscheinlich apxs als root ausführen, so dass er alles richtig eingerichtet werden.

Dann wirst du die XSendFile und XSendFilePath Optionen in der Apache-Konfigurationsdateien festlegen wollen. Sehen Sie sich die Hilfe bei der oben genannten URL für weitere Informationen.

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