使用 open() 方法在 rails 中创建/重命名临时文件
Create / Rename a tempfile in rails using open() method
我正在尝试创建一个临时文件,我正在从 URL 下载该文件:例如这张 JPEG 图片在 URL:
中没有扩展名
http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7
您可以看到它没有 .jpg 扩展名...所以我想将它保存为临时文件,但在保存之前附加 .jpg 扩展名。这可能吗?或者,如果那不可能,请在保存后重命名临时文件?
现在,我可以通过说来创建临时文件
file = open("http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7")
写入临时文件...但这没有帮助,因为临时文件也没有扩展名
#<Tempfile:/var/folders/3m/t1v11gzj32n0fdbhwr823y600000gn/T/open-uri20150309-21935-qw7870>
如您所见here,您无法为通过open-uri
下载的临时文件指定扩展名。
因此,只需创建扩展名为 .jpg
的新临时文件并将下载的文件写入其中:
require 'tempfile'
require 'open-uri'
input_file = open('http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7')
output_file = Tempfile.new(['output', '.jpg'])
output_file.binmode
output_file.write input_file.read
output_file.flush
output_file.seek(0)
p output_file.path
p output_file.size
我正在尝试创建一个临时文件,我正在从 URL 下载该文件:例如这张 JPEG 图片在 URL:
中没有扩展名http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7
您可以看到它没有 .jpg 扩展名...所以我想将它保存为临时文件,但在保存之前附加 .jpg 扩展名。这可能吗?或者,如果那不可能,请在保存后重命名临时文件?
现在,我可以通过说来创建临时文件
file = open("http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7")
写入临时文件...但这没有帮助,因为临时文件也没有扩展名
#<Tempfile:/var/folders/3m/t1v11gzj32n0fdbhwr823y600000gn/T/open-uri20150309-21935-qw7870>
如您所见here,您无法为通过open-uri
下载的临时文件指定扩展名。
因此,只需创建扩展名为 .jpg
的新临时文件并将下载的文件写入其中:
require 'tempfile'
require 'open-uri'
input_file = open('http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7')
output_file = Tempfile.new(['output', '.jpg'])
output_file.binmode
output_file.write input_file.read
output_file.flush
output_file.seek(0)
p output_file.path
p output_file.size