【问题标题】:Rails 3 / paperclip: How to get/set attributes of user-submitted mp3 file?Rails 3 / paperclip:如何获取/设置用户提交的 mp3 文件的属性?
【发布时间】:2014-04-24 15:04:37
【问题描述】:

我有一个 Rails 应用程序,用户可以在其中提交要上传的 mp3 文件。我想在上传它们时为其设置 Ruby 对象属性。 TagLib 让我可以轻松获取元数据,并且我可以在本地使其正常工作,但我正在努力找出如何在将对象保存到 Amazon S3 之前访问它。回形针对象会一直保存在内存中,直到你保存它们。

附件在保存之前存储在哪里,我如何访问它们?模型上的路径属性是回形针在 S3 上存储文件(将来时)的位置。

作为参考,我正在尝试对我的声音文件运行 before_[attachment name]_post_process 过滤器以获取文件的长度(以秒为单位)并将其设置为属性。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 amazon-s3 paperclip


    【解决方案1】:

    我在the Paperclip docs 中找不到这个(如果可以,请告诉我),但事实证明,您的模型类中指定的附件名称是对象。使用TagLib,您可以在保存之前访问声音的属性,如下所示:

    # app/models/sound.rb
    
        …code…
    
        has_attached_file :soundfile
                 vv same name ^^
        before_soundfile_post_process :set_song_attrs
    
        …code…
    
        def set_song_attrs
          TagLib::FileRef.open(soundfile.queued_for_write[:original].path) do |file| 
            self.length = file.audio_properties.length
            self.artist = file.tag.artist
          end 
        end 
    

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      相关资源
      最近更新 更多