2015-06-04 5 views
0

Пользователь может загрузить статический html-файл на моем сайте.Как показать статический файл html, загруженный пользователем

Я сохранил файл с помощью скрепки.

Но как я могу показать html в новом окне, щелкнув ссылку, не загрузив ее.

Это, к примеру. каждый пользователь может загрузить свой файл резюме в HTML формате

Тогда мы можем увидеть резюме щелчком = User.find_by_id(ID).resume.url

Но я не хочу, чтобы загрузить файл HTML.

Я хочу, чтобы открыть новое окно или hsow его в текущем окне или во встроенном кадре

Как я могу это сделать?

Благодаря ~

+2

Я настоятельно рекомендую не делать этого из-за проблем с безопасностью. Вы разрешите кому-либо загружать html ... и затем запускать его на своем сервере, не проверяя, что все в порядке? Не хорошая идея. Не забывайте, что html может включать скрипты и всевозможные гадости. –

+0

На самом деле для нашего внутреннего использования. Спасибо за ваш совет – newBike

ответ

1

Это действительно зависит от того, как вы храните их:

  1. Если вы храните HTML в базе данных, вы можете сделать что-то вроде следующего:

    • Добавить маршрут:

      get '/resume/:id' => 'resume#show' 
      
    • Создание контроллера:

      class ResumeController < ApplicationController 
          def show 
          render html: resume_html(params[:id]).html_safe 
          end 
      
          private 
      
          def resume_html(id) 
          # here you should return your resume HTML by either 
          # just returning a string 
          "<h1>Resume</h1>" 
          # ... or reading it from a file (this assumes UTF8 encoding) 
          Paperclip.io_adapters.for(User.find_by_id(id).resume).read. 
           pack('C*').force_encoding('utf-8') 
          end 
      end 
      
  2. Если хранить HTML-файл где-то в общедоступном месте, как #{Rails.root}/public, то это просто вопрос выдачи редирект в-регулятора (не забудьте добавить маршрут, а):

    class ResumeController < ApplicationController 
        def show 
        redirect_to resume_path(params[:id]) 
        end 
    
        private 
    
        def resume_path(id) 
        # do whatever you need to return resume URL/path 
        end 
    end 
    

Надеется, что это помогает!

Смежные вопросы