Ruby on rails 回形针套件:如果没有分机,则可扩展至mp3

Ruby on rails 回形针套件:如果没有分机,则可扩展至mp3,ruby-on-rails,ruby-on-rails-3,paperclip,Ruby On Rails,Ruby On Rails 3,Paperclip,我正在开发一个rails 3应用程序,它使用回形针将音频文件保存到Amazon S3。我保存了很多从url传输的mp3文件,但是它们在传输时没有扩展名。我知道这些文件是mp3文件,但在回形针中它们没有扩展名。如果没有提供分机,如何将分机设置为mp3 has_attached_file :audio, :storage => :s3, :s3_credentials => "#{Rails.root}/config/aws.yml", :hash_sec

我正在开发一个rails 3应用程序,它使用回形针将音频文件保存到Amazon S3。我保存了很多从url传输的mp3文件,但是它们在传输时没有扩展名。我知道这些文件是mp3文件,但在回形针中它们没有扩展名。如果没有提供分机,如何将分机设置为mp3

    has_attached_file :audio,
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/aws.yml",
    :hash_secret => 'secret',
    :hash_data => ':class/:attachment/:id',
    :path           => ':rails_env/:class/:id/:style/:hash.:extension'

def transfer_to_s3
    io = open(URI.parse(recording_url + '.mp3'))        
    self.audio = io
    self.save
end

这是一个猜测,但试试这个:

更改:

has_attached_file :photo, :url => "/:class/:attachment/:id/:style_:basename.:extension"
致:

只是个疯狂的想法。可能会有一些句法上的损伤,但可能会把你推向正确的方向。对不起:D


您还可以在保存
后进行匹配
gsub
组合。

文件未保存为.mp3的原因是您使用的是打开uri。将保存代码更改为:

self.audio = URI.parse(recording_url)
self.save
这应该能解决你的问题

出现这种情况的原因是,openuri创建了一个没有扩展名的tempfile,并提供给了回形针

希望这有帮助

self.audio = URI.parse(recording_url)
self.save