Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我如何翻译;文件。打开";要兼容S3?_Ruby On Rails_Ruby_Amazon S3 - Fatal编程技术网

Ruby on rails 我如何翻译;文件。打开";要兼容S3?

Ruby on rails 我如何翻译;文件。打开";要兼容S3?,ruby-on-rails,ruby,amazon-s3,Ruby On Rails,Ruby,Amazon S3,我有这条线 @organization.search_image = File.open(@photo.photo.path(:original)) 除了寻找一些本地的东西,我所有的照片现在都在S3上了。如何将其转换为在S3上打开文件?您会想到两个选项: 使用提供的抽象,并使用S3访问您的数据 继续文件系统抽象,但将S3绑定到一个本地代理文件系统,该文件系统可用于*nix/OSX(但据我所知,不适用于Windows),从而降低了这种方法的普遍适用性。这可能也比方案1的效率低 我认为您应该做的是

我有这条线

@organization.search_image = File.open(@photo.photo.path(:original))

除了寻找一些本地的东西,我所有的照片现在都在S3上了。如何将其转换为在S3上打开文件?

您会想到两个选项:

  • 使用提供的抽象,并使用S3访问您的数据
  • 继续文件系统抽象,但将S3绑定到一个本地代理文件系统,该文件系统可用于*nix/OSX(但据我所知,不适用于Windows),从而降低了这种方法的普遍适用性。这可能也比方案1的效率低

  • 我认为您应该做的是在S3中下载/流式传输图像,并将其写入新文件,然后使用新文件

    open('newpic.png', 'w') do |file|
        S3Object.stream('pic.png', 'bucket_name') do |chunk|
          file.write chunk
        end
    end
    
    #Write the streamed file to newpic.png then use newpic.png.
    

    虽然S3Ruby绑定可以工作,但我似乎无法将其转换为可以在本地设备上使用的东西,更不用说重新发送回服务器了。我发现了Right_Aws,并为此编写了一个脚本,但它无法处理写入和重新添加到服务器的操作。