[Ruby-on-rails] 레일에 파일 다운로드 링크


Answers

레일즈 4 :

경로 :

get "home/download_pdf"

컨트롤러 (이미 pdf 있음) :

def download_pdf
  send_file(
    "#{Rails.root}/public/your_file.pdf",
    filename: "your_custom_file_name.pdf",
    type: "application/pdf"
  )
end

컨트롤러에서 (pdf 생성 필요) :

require "prawn"
class ClientsController < ApplicationController

  def download_pdf
    client = Client.find(params[:id])
    send_data generate_pdf(client),
              filename: "#{client.name}.pdf",
              type: "application/pdf"
  end

  private

  def generate_pdf(client)
    Prawn::Document.new do
      text client.name, align: :center
      text "Address: #{client.address}"
      text "Email: #{client.email}"
    end.render
  end
end

보기 :

<%= link_to 'Download PDF', home_download_pdf_url %>

Rails 3

그것을하는 방법 :

def download
  send_data pdf,
    :filename => "abc.pdf",
    :type => "application/pdf"
end

이 대안에 가야합니다.

레일 <3

공용 폴더에있는 파일

레일즈 애플리케이션에서 파일을 다운로드하는 방법

공용 폴더에 파일을 배치해야합니다. 즉 트릭입니다.

파일이 올바르게 배치 될 때 작동해야합니다.

파일을 공용 폴더로 이동할 수없는 경우 알려주십시오.

컨트롤러를 통해 다운로드

다운로드 액션과 link_to 컨트롤러를 생성

  def download
    send_file '/assets/data/abc.pdf', :type=>"application/pdf", :x_sendfile=>true
  end
Question

방문자들에게 몇 가지 PDF를 다운로드 할 수있는 옵션을 제공하고 싶습니다. 나는 시도했다 :

<%= link_to "abc", "/data/abc.pdf"%>

<%= link_to "abc", "/data/abc.pdf", :format => 'pdf' %>

일부 유사하지만 작동하지 않는 것 같습니다. 계속 No route matches [GET] "/data/abc.pdf" 를 찾을 수 No route matches [GET] "/data/abc.pdf"

자산 폴더에있는 data라는 폴더에 pdf 파일이 있습니다. 어떤 도움을 주시면 감사하겠습니다.




레일즈 4 :

경로 :

get "home/download_pdf"

컨트롤러 (이미 pdf 있음) :

def download_pdf
  send_file(
    "#{Rails.root}/public/your_file.pdf",
    filename: "your_custom_file_name.pdf",
    type: "application/pdf"
  )
end

컨트롤러에서 (pdf 생성 필요) :

require "prawn"
class ClientsController < ApplicationController

  def download_pdf
    client = Client.find(params[:id])
    send_data generate_pdf(client),
              filename: "#{client.name}.pdf",
              type: "application/pdf"
  end

  private

  def generate_pdf(client)
    Prawn::Document.new do
      text client.name, align: :center
      text "Address: #{client.address}"
      text "Email: #{client.email}"
    end.render
  end
end

보기 :

<%= link_to 'Download PDF', home_download_pdf_url %>



파일이 정적 인 경우 (변경되지 않는다는 의미) 공용 폴더에 저장하십시오.

다음과 같이 다운로드 할 수 있습니다.

<a href="file.pdf" download>PDF</a>

또는 ERB와 함께

<%= link_to 'PDF', 'file.pdf', download: '' %>

파일을 다운로드 할 다른 이름으로 지정하려면 해당 이름을 다운로드 옵션에 전달하십시오.

<%= link_to 'PDF', 'file.pdf', download: 'data' %>

이렇게하면 file.pdf 대신 data.pdf 파일을 다운로드합니다.




다음과 같이 컨트롤러 동작을 호출하면됩니다.

<%= link_to "Download", download_file_path, class: "btn btn-sm btn-default", target: "_blank" %>

그리고 당신의 컨트롤러에서

def download_file
 redirect_to paperclip_attachment.file.url
end