【问题标题】:Create / Rename a tempfile in rails using open() method使用 open() 方法在 Rails 中创建/重命名临时文件
【发布时间】:2015-05-11 03:39:34
【问题描述】:

我正在尝试创建一个临时文件,我正在从 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>

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 carrierwave


    【解决方案1】:

    如您所见here,您无法为通过open-uri 下载的临时文件指定扩展名。

    所以,只需创建带有 .jpg 扩展名的新 Tempfile 并将下载的文件写入其中:

    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
    

    【讨论】:

    • 我走在正确的轨道上...我有类似的事情开始了,你让我走上了正确的道路。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多