Я передаю wav-данные из флеш-приложения. Если я получу данные и сделаю следующее:
f = File.open('c:/test.wav', 'wb')
f << wav_data.pack('c'*wav_data.length)
f.close
WAV-файл работает отлично. Если я сделаю это:
f = Tempfile.new('test.wav')
f << wav_data.pack('c'*wav_data.length)
f.close
FileUtils.mv(f.path, 'c:/')
Файл есть, но звучит все искажено. Проверка в шестнадцатеричном редакторе показывает, что везде, где рабочий файл имел 0A (или \ n), искаженная версия имела 0D0A (или \ r \ n)
Я использую это в сочетании с rails + paperclip и собираюсь использовать комбинацию Heroku и S3 для живого приложения, поэтому я надеюсь, что эта проблема решится сама собой, но я бы хотел, чтобы это работало на моей локальной машине в настоящее время.
Кто-нибудь знает, по какой причине FileUtils.mv будет делать это, и есть ли способ изменить его поведение?