Question

Je cherche un moyen de télécharger un fichier xml. J'utilise:

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

mais cela me télécharge toujours un fichier vide. Le fichier lui-même a 16 Ko de données en elle ...

Pourquoi?

Maechi

Était-ce utile?

La solution 2

Problème sauvé, mais je ne sais pas pourquoi

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

send_data travaille ... mais pas send_file!

Autres conseils

probablement vous devez commenter

config.action_dispatch.x_sendfile_header = "X-Sendfile"

dans production.rb

voir http: // vijaydev. wordpress.com/2010/12/15/rails-3-and-apache-x-sendfile/ des explications

Comme Eugene dit dans sa réponse, dans un environnement de production Rails laisser Apache ou nginx envoyer le fichier réel pour vous avec x-sendfile, si vous n'utilisez ces que l'infrastructure pour rails vous devez commenter la ligne suggéré dans le

  

config / environnements / fichier production.rb.

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

Vous devez activer l'utilisation sendfile dans ./config/environments/production.rb:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

Si cette ligne est absente (ou commentée), puis Rails correctement envoyer le fichier, mais pas par Apache.

Si vous obtenez des fichiers de 0 octet, assurez-vous que vous avez installé mod_xsendfile, qui est disponible à partir de https: // tn123.org/mod_xsendfile

Télécharger le fichier source unique (mod_xsendfile.c) et le compiler (apxs -cia mod_xsendfile.c). Vous voulez probablement exécuter apxs en tant que root afin qu'il configuré correctement tout.

Ensuite, vous allez vouloir définir les options de XSendFile et XSendFilePath dans vos fichiers de configuration Apache. Consultez l'aide à l'adresse ci-dessus pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top