0

我已经成功地遵循了 Soundcloud 的 API 文档,但遇到了一个让我卡住的错误。

使用他们的示例上传/发布文件时,我在本地计算机上对文件进行硬编码时没有问题。我真正想做的是传输存储在 S3 上的文件。这一直失败,并出现Errno::ENOENT - No such file or directory错误。包括 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
4

1 回答 1

3

好的,我自己设法解决了这个问题,这很烦人。首先,在上述任何一点上,我实际上都没有调用 Open-URI。一旦我怀疑这一点,那就只是修改这个的一个例子:

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

对此:

:asset_data => open(fileurl)

我希望这对其他人有帮助。

于 2013-02-11T16:45:36.617 回答