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?.
Réponse
Trop de publicités?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 )