84 votes

Différence entre les rails send_data et send_file, avec exemple

Pouvez-vous expliquer quelle est la différence entre send_data et send_file? Lequel est le meilleur pour le streaming et le processus de téléchargement de fichier?.

118voto

fl00r Points 41855

send_data(données, options = {})
send_file(chemin d'accès, options = {})

Principale différence ici est que vous passez de DONNÉES (code binaire ou autre) avec send_data ou le CHEMIN du fichier avec send_file.

De sorte que vous pouvez générer des données et de les envoyer comme une ligne de texte ou une pièce jointe sans création de fichiers sur votre serveur via send_data. Ou vous pouvez envoyer un fichier prêt à send_file

data = "Hello World!"
send_data( data, :filename => "my_file.txt" )

Ou

data = "Hello World!"
file = "my_file.txt"
File.open(file, "w"){ |f| f << data }
send_file( file )

Pour la performance, il est préférable de générer le fichier une fois et ensuite l'envoyer autant de fois que vous le souhaitez. Donc, send_file leur conviennent mieux.

Pour le streaming, comme je le comprends, les deux méthodes utilisent le même tas d'options et de paramètres, de sorte que vous pouvez utiliser X-Envoyer ou quoi que ce soit.

UPD

send_data et enregistrer le fichier:

data = "Hello World!"
file = "my_file.txt"
File.open(file, "w"){ |f| f << data }
send_data( data )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X