我已经成功地遵循了 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