我正在进行项目,我需要更改文件的扩展名并下载更改扩展名的文件。我做了以下代码。
send_file('x.foo', filename: 'y.bar')
实际文件是x.foo
,我创建了具有不同扩展名的y.bar
文件。现在我想在运行时更新y.bar
中的内容,然后我将下载具有不同扩展名和更新内容的文件。我怎样才能做到这一点???
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')