2013-02-10 66 views
0

我已经成功地遵循了Soundcloud的API文档,但遇到了一个让我卡住的错误。从S3存储桶发布音频到Soundcloud?

当使用他们的example上传/发布文件时,我在我的本地机器上硬编码文件时没有任何问题。我真正想要做的是传输存储在S3上的文件。这一直不及Errno :: ENOENT - 没有这样的文件或目录错误。包含Open-URI,我通过对另一台服务器上的公共文件进行硬编码来测试它,但仍然失败。所以我不觉得问题出在S3或我的generate_secure_s3_url上,因为我在其他地方成功使用了我的generate_secure_s3_url。

我的代码如下,任何人都可以帮忙吗?

def product_tracks_to_soundcloud(access_token) 
    require 'soundcloud' 
    require 'open-uri' 
    # create a client object with access token 
    client = Soundcloud.new(:access_token => access_token) 

    self.producttracklistings.each do |pt| 
     filebase = URI.encode(pt.track.track_file_name, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")) 
     fileurl = generate_secure_s3_url(filebase) 
     # upload an audio file 
    track = client.post('/tracks', :track => { 
     :title => pt.track.name, 
     :asset_data => File.new(fileurl, 'rb') 
    }) 
    end 

回答

3

好吧,设法弄清楚这一个我自己,这是令人讨厌的简单。首先,在上面我实际上并没有要求Open-URI。有一次,我sussed的是,就在那时只是ammending这种的情况下:

:asset_data => File.new(fileurl, 'rb') 

这样:

:asset_data => open(fileurl) 

我希望这是帮助他人。