Принудительно загрузить файл в публичный каталог из действия контроллера? - PullRequest
1 голос
/ 09 октября 2009

Я сделал это:

<% response.headers['Content-Disposition'] = "attachment; 
        filename=somefile.txt" -%>

I am a text file!

Я бы хотел принудительно загрузить файл в мою общую папку, не раскрывая путь, поэтому у меня есть контроллер, который проверяет некоторые параметры, чтобы узнать местоположение моего файла (в моей общей папке), а затем я хотел бы принудительно загрузить:

<% response.headers['Content-Disposition'] = "attachment; 
        filename=#{@invoice.file_name}" %>

How do I get the file content to be here rather than this text?

Есть ли способ сделать это?

Ответы [ 2 ]

5 голосов
/ 09 октября 2009

Я думаю, что send_file будет делать то, что вы хотите.

send_file '/path/to.file', :type => 'text/plain', :disposition => 'inline'
3 голосов
/ 09 октября 2009

Определение заголовков не является задачей представления. Делать это в контроллере было бы намного чище. На самом деле вам не нужно HTML-представление для рендеринга файлов такого типа.

Делать что-то подобное было бы более уместно:

def action
    response.headers['Content-Disposition'] = 'attachment; filename=somefile.txt'
    return render(:text => File.read('/path/to/your/file.txt')
end

Вы сохраняете свою вещь в чистоте (не имея кода работы на ваш взгляд) и соответственно принудительно загружаете файл.

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