我现在正试图将一个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不允许我继续前进。如果我能得到任何帮助,我真的很感激(:
最佳
答案 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)
})