Как изменить расширение файла во время выполнения в ruby ​​on rails - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над проектом и хочу показать две ссылки для загрузки одного и того же файла, но с разными расширениями, первая ссылка скачать файл с фактическим расширением, а другая ссылка скачать файл с измененным расширением.Как у меня есть файл 1.txt, первая ссылка на скачивание файла 1.txt, и я хочу другую ссылку, чтобы загрузить файл 1.docx, используя ruby ​​on rails.

Первая ссылка работает правильно, которая загружает реальный файл, и у меня естьсоздал метод для второй ссылки.

def downloaddocxfile
      require 'fileutils'
      Dir.glob(params[:file]).each do |f|
         if File.extname(f) != '.docx'
            FileUtils.cp f, "#{File.dirname(f)}/#{File.basename(f,'.*')}.docx"
            send_file "#{File.dirname(f)}/#{File.basename(f,'.*')}.docx"
            # system("rm -rf #{File.dirname(f)}/#{File.basename(f,'.*')}.docx")
         else   
            send_file "#{params[:file]}"
         end
      end
   end

Этот метод создает копию исходного файла и изменяет расширение на .docx.

Я не хочу показывать два файла с разными расширениямив списке файлов.Поэтому я хочу удалить этот файл, который создается с расширением .docx после его загрузки.Итак, как я могу это сделать?

1 Ответ

0 голосов
/ 12 февраля 2019

send_file позволяет указать имя файла с помощью параметра :filename.

Если на вашем сервере есть файл x.foo, то:

send_file('x.foo', filename: 'y.bar')

отправит файл x.foo с именем y.bar в браузер.

Это браузер должен использовать предложенное имя, но большинство браузеров сохранят файл как y.bar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...