1. ホーム
  2. ruby-on-rails

[解決済み] Ruby on Railsのsend_dataとsend_fileの違いは何ですか?

2023-07-08 01:01:35

質問

ストリーミングやファイルダウンロードに最適なのはどれですか?

例を示してください。

どのように解決するのですか?

send_data(_data_, options = {})
send_file(_path_, options = {}) 

ここでの主な違いは、DATA(バイナリコードでも何でも)を send_data でファイルのPATHを渡すか send_file .

このように、データを生成してインラインテキストや添付ファイルとして送信することで、サーバにファイルを生成することなく send_data . また、準備できたファイルを send_file

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

または

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

パフォーマンス的には、一度ファイルを生成して、それを何度でも送信する方がよいでしょう。そのため send_file の方が適しています。

ストリーミングについては、私が理解する限り、この両方の方法は同じオプションと設定の束を使用するので、X-Sendなどを使用することができます。

UPD

send_data とファイルを保存します。

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