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

File.new command for Ruby to upload mp3 file to 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 文件名和参数 [: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不允许我继续前进。如果我能得到任何帮助,我真的很感激 (:

最佳

您已有一个文件,无需使用 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)
 })