代码之家  ›  专栏  ›  技术社区  ›  Zak

使用Rails和曲别针导入旧数据

  •  9
  • Zak  · 技术社区  · 15 年前

    我在应用程序中使用回形针作为附件。我正在为一堆旧数据编写导入脚本,但我不知道如何从磁盘上的文件创建回形针对象。我的第一个猜测是创建模拟CGI多部分对象,但这似乎是一个粗糙的解决方案,我最初的尝试失败了,我想是因为我没有正确使用to_tempfile方法。

    2 回复  |  直到 15 年前
        1
  •  16
  •   Ben    15 年前

    thing.image = File.new("/path/to/file.png")
    thing.save
    
        2
  •  15
  •   Francois    15 年前

    这对本地文件非常有效,但对远程文件不起作用。我有一个应用程序,使用回形针上传图像。这些图像存储在AmazonS3上。无论如何,我有一些旧数据需要导入,因此我尝试了以下方法:

    thing.image = open('http://www.someurl.com/path/to/image.jpg')
    thing.save
    

    如果文件大于10K左右,则openuri返回一个TempFile对象。但s3上的文件名最终是唯一的,但实际上与image.jpg的原始文件名无关

    我通过执行以下操作解决了此问题:

    remote_photo = open('http://www.someurl.com/path/to/image.jpg')
    def remote_photo.original_filename;base_uri.path.split('/').last; end   
    thing.image = remote_photo
    thing.save