如何获取/设置用户提交的mp3文件的属性



我有一个Rails应用程序,用户可以提交要上传的mp3文件。我想在它们上传时设置Ruby对象属性。TagLib让我可以轻松地获取元数据,在本地我可以很好地做到这一点,但是在将对象保存到Amazon S3之前,我很难找到如何访问它。回形针表示对象保存在内存中,直到您保存它们。

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

作为参考,我试图在我的声音文件上运行before_[attachment name]_post_process过滤器,以获取文件的秒数长度,并将其设置为属性。

我在回形针文档中找不到这个(如果可以,请让我知道),但事实证明,在模型类中指定的附件名称是对象。使用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 

相关内容

  • 没有找到相关文章

最新更新