【问题标题】:How to access file hash of carrierwave如何访问carrierwave的文件哈希
【发布时间】:2016-04-29 07:21:25
【问题描述】:

我有一个正在开发的音乐平台,我使用carrierwave 和fog 将曲目上传到S3 存储桶。

我想在临时文件上传之前访问它。我注意到当我将文件发送到控制器时,当我在控制台中执行 @track.file.inspect 时,我得到以下信息:

#<AudioUploader:0x007fa46d07bb60 @model=#<Track id: nil, artist_id: 1, title: "Not Alone", file: nil, created_at:
nil, updated_at: nil, track_cover: nil, public: false, like_facebook: nil, share_facebook: false, follow_twitter: nil, share_t
witter: false, follow_instagram: nil, shazam_track: nil, about_track: "", lyrics: "", credits: "", price: #<BigDecimal:7fa4767

d2f18,'0.0',9(18)>, name_your_price: false>, @mounted_as=:file, @cache_id="1461881968-11098-8389", @filename="Not_Alone_Lyrics
_-_RED_-_Until_We_Have_Faces.mp3", @original_filename="Not_Alone_Lyrics_-_RED_-_Until_We_Have_Faces.mp3", @file=#<CarrierWave:
:SanitizedFile:0x007fa46d079658 @file="/Users/*****/Desktop/projects/*****/public/uploads/tmp/1461881968-11098-8389/Not_
Alone_Lyrics_-_RED_-_Until_We_Have_Faces.mp3", @original_filename=nil, @content_type="audio/mp3">, @versions={}>
Completed 500 Internal Server Error in 643ms (ActiveRecord: 496.1ms)

如何访问字符串:

/Users/*****/Desktop/projects/*****/public/uploads/tmp/1461881968-11098-8389/Not_
Alone_Lyrics_-_RED_-_Until_We_Have_Faces.mp3

【问题讨论】:

  • 那么你需要一个长路径到一个临时文件吗?
  • 没错,是的。
  • 我不记得了:打开pry并尝试:@track.file.path@track.file.filepath,您也可以查看cw的方法:@track.file.methods
  • 谢谢你会试试的!我找到的解决方法是这样的audio = @track.file,然后再次audio = audio.file,然后再次访问我想要的audio.file。它以这种方式工作,但它很尴尬
  • 最终是的,但并不意味着我的方式是正确的做事方式,我看不出我的其他问题有什么问题,如果不是为了我,它可能会帮助其他人未来。

标签: ruby-on-rails ruby ruby-on-rails-4 amazon-s3


【解决方案1】:

如果您使用标准的 Tempfile 对象,您可以简单地调用#path

http://ruby-doc.org/stdlib-1.9.3/libdoc/tempfile/rdoc/Tempfile.html#method-i-path

【讨论】:

  • 不允许访问内部存储的文件路径
猜你喜欢
  • 2014-05-06
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多