用于Ruby的File.new命令将mp3文件上传到soundcloud

时间:2016-03-16 19:30:13

标签: ruby soundcloud

我现在正试图将一个mp3文件上传到Soundcloud。在这里,我陷入了在Ruby中使用File.new命令的困境。 我发送请求和传递参数如下所示。

Parameters: {..."mp3_1"=>#<ActionDispatch::Http::UploadedFile:0x007ff24d5e3ea8 @tempfile=#<Tempfile:/var/folders/kk/y_wprlln2qv6mzylj03g14x00000gn/T/RackMultipart20160316-21426-14vu8x1.mp3>, @original_filename="datasecurity.mp3", @content_type="audio/mp3", @headers="Content-Disposition: form-data; name=\"mp3_1\"; filename=\"datasecurity.mp3\"\r\nContent-Type: audio/mp3\r\n">}

然后,我使用potentail文件名和params [:mp3_1]编写File.new命令,如下所示。

client = Soundcloud.new(:access_token => 'XXX')

track = client.post('/tracks', :track => {
  :title => 'This is my sound',
  :asset_data => File.new("file name",params[:mp3_1])
})

现在我收到一条错误说: 没有将ActionDispatch :: Http :: UploadedFile隐式转换为String

回形针功能起作用(直接将文件存储到存储器中已经完成了)但是这个file.new不允许我继续前进。如果我能得到任何帮助,我真的很感激(:

最佳

1 个答案:

答案 0 :(得分:2)

您已有文件,无需使用File.new

创建新文件

仔细查看转储:

 @tempfile=#<Tempfile:/var/folders/...../RackMultipart20160316-21426-14vu8x1.mp3

这是一个文件,您可以直接在通话中使用

client.post('/tracks', :track => {
         :title => 'This is my sound',
         :asset_data => params[:mp3_1].tempfile)
 })