我在从 S3 读取文件时遇到一些问题。我希望能够远程加载 ID3 标签,但使用 open-URI 不起作用,它会给我以下错误:
ruby-1.8.7-p302 > c=TagLib2::File.new(open(URI.parse("http://recordtemple.com.s3.amazonaws.com/music/745/original/The%20Stranger.mp3?1292096514")))
TypeError: can't convert Tempfile into String
from (irb):8:in `initialize'
from (irb):8:in `new'
from (irb):8
但是,如果我下载相同的文件并将其放在我的桌面上(即不需要 open-URI),它就可以正常工作。
c=TagLib2::File.new("/Users/momofwombie/Desktop/blah.mp3")
我还应该做些什么来读取远程文件吗?
更新:我刚刚找到这个链接,这可能会解释一点,但肯定有一些方法可以做到这一点......
最佳答案
可能想查看 AWS::S3 , 用于亚马逊简单存储服务的 Ruby 库
为文件执行 AWS::S3:S3Object.find
,然后使用 about
检索元数据
此解决方案假定您拥有 AWS 凭证和访问包含相关文件的 S3 存储桶的权限。
关于ruby-on-rails - ruby 使用 open-URI 从 S3 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4422956/