ruby-on-rails - 如何使用具有不同扩展名的 send_file 更新新创建的文件中的内容?
问题描述
我正在处理需要更改文件扩展名并下载扩展名已更改的文件的项目。我用下面的代码做了。
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')
推荐阅读
- database - DynamoDB 是否保证在快速更新时收敛到最新数据?
- python - 阶乘数系统算法的形式证明
- python - Keras 中单一维度的全局运算符?
- vb.net-2010 - Process.Start 从其他表单的文本框中删除文本
- vb.net - 为什么我的类中的公共只读属性不显示???(视觉工作室 2019)
- c# - 为什么是 ImmutableList
一个类但 ImmutableArray 一个结构? - mediawiki - 带有链接和内联 html 标签的 MediaWiki 模板
- python - 使用 Python 将 JSON 内容写入 HDFS 位置
- shell - 无法创建先进先出“[Errno 17] 文件存在”
- variables - 将变量的多个值设置为“选项”