Ruby on rails 从S3存储桶向Soundcloud发布音频?
我成功地遵循了Soundcloud的API文档,但遇到了一个让我陷入困境的错误 当使用他们的软件上传/发布文件时,我在本地计算机上硬编码文件时不会遇到任何问题。我真正想做的是传输存储在S3上的文件。此操作一直失败,出现Errno::enoint-没有此类文件或目录错误。开放URI包括在内,我通过硬编码另一台服务器上可供公众使用的文件对其进行了测试,但仍然失败。因此,我觉得S3或我的generate_secure_S3_url没有问题,因为我在其他地方成功地使用了generate_secure_S3_url 我的代码如下,有人能帮忙吗Ruby on rails 从S3存储桶向Soundcloud发布音频?,ruby-on-rails,amazon-s3,soundcloud,open-uri,Ruby On Rails,Amazon S3,Soundcloud,Open Uri,我成功地遵循了Soundcloud的API文档,但遇到了一个让我陷入困境的错误 当使用他们的软件上传/发布文件时,我在本地计算机上硬编码文件时不会遇到任何问题。我真正想做的是传输存储在S3上的文件。此操作一直失败,出现Errno::enoint-没有此类文件或目录错误。开放URI包括在内,我通过硬编码另一台服务器上可供公众使用的文件对其进行了测试,但仍然失败。因此,我觉得S3或我的generate_secure_S3_url没有问题,因为我在其他地方成功地使用了generate_secure_S
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
好吧,我自己设法弄明白了这一点,这很简单,令人恼火。首先,在上面的任何一点上,我都没有真正调用openuri。一旦我使用了它,那就只是一个例子:
:asset_data => File.new(fileurl, 'rb')
为此:
:asset_data => open(fileurl)
我希望这对其他人有帮助。好的,我自己设法解决了这个问题,但这很简单,令人恼火。首先,在上面的任何一点上,我都没有真正调用openuri。一旦我使用了它,那就只是一个例子:
:asset_data => File.new(fileurl, 'rb')
为此:
:asset_data => open(fileurl)
我希望这对其他人有帮助