代码之家  ›  专栏  ›  技术社区  ›  Jan

Carrierwave(带FOG)文件扩展名在视图中不匹配

  •  0
  • Jan  · 技术社区  · 11 年前

    我正在上传一个音频文件并制作一个mp3版本,这很有效。此外,我正在从mp3中生成一个波形作为“png”。Wich也很好用。

    图像已生成并保存,但后缀为“mp3”,应为“png”。 该视图使用“mp3”文件扩展名正确渲染了图像。

    现在,当视图试图获取图像时,我得到了一个404错误。文件名假定不正确:

    https://mybucket.amazonaws.com/uploads/sound/soundfile/142/waveform_Sky_02.wav
    

    应该是

    https://mybucket.amazonaws.com/uploads/sound/soundfile/142/waveform.png
    

    这是我的:版本代码:

     version :waveform do
    
        def filename
          "watermark.png" if original_filename.present?
        end
    
        def convert_to_waveform
          cache_stored_file! if !cached?
          Dir::Tmpname.create(File.basename(current_path)) do |tempname|
            begin
              puts system %Q{ffmpeg -y -i "#{current_path}" -f wav "#{tempname}" > /dev/null 2>&1}
              FileUtils.rm current_path
              Waveform.generate(tempname, current_path, method: :rms, background_color: :transparent)
    
            ensure
              FileUtils.rm tempname
            end
          end
        end
    
        process :convert_to_waveform
    
      end
    

    数据库保存“waveform_Sky_02.wav”

    我该怎么做?

    1 回复  |  直到 11 年前
        1
  •  0
  •   Jan    11 年前

    这一直在为我工作:

    def full_filename(for_file=file)
      super.chomp('wav') + '.png'
    end
    

    或对于所有文件类型:

    def full_filename(for_file=file)
      super.chomp(File.extname(super)) + '.png'
    end