如何使用不同扩展名的send_file更新新创建文件中的内容?

问题描述 投票:0回答:1

我正在进行项目,我需要更改文件的扩展名并下载更改扩展名的文件。我做了以下代码。

send_file('x.foo', filename: 'y.bar')

实际文件是x.foo,我创建了具有不同扩展名的y.bar文件。现在我想在运行时更新y.bar中的内容,然后我将下载具有不同扩展名和更新内容的文件。我怎样才能做到这一点???

ruby-on-rails ruby
1个回答
1
投票

send_file不会自己编写文件。相反,它将文件名传递回Web服务器,然后执行实际写入(因此您的Rails应用程序负载较少)。

为了实现您的目标,您可以读取文件,在内存中应用更改,然后使用send_data将数据写入客户端:

buffer = File.read('x.foo')
buffer = apply_changes(buffer)
send_data(buffer, filename: 'y.bar')

或者您可以将更改写入新文件并利用send_file

unless File.exist?('y.bar')
  buffer = File.read('x.foo')
  buffer = apply_changes(buffer)
  File.write('y.bar', buffer)
end
send_file('y.bar')
© www.soinside.com 2019 - 2024. All rights reserved.