복붙노트

[RUBY-ON-RAILS] 레일에서 파일 다운로드 링크

RUBY-ON-RAILS

레일에서 파일 다운로드 링크

나는 방문자에게 약간의 PDF 파일을 다운로드 할 수있는 옵션을 제공하고 싶습니다. 나는 시도했다 :

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

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

일부 변화가 있지만 작동하지 않습니다. 나는 [GET] "/data/abc.pdf"어떤 경로 일치를 받고 없습니다 계속

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

해결법

  1. ==============================

    1.4 레일 :

    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 %>
    

    3 레일

    방법은 그것을 할 수 있습니다 :

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

    이 대안으로 가야한다

    레일 <3

    공용 폴더의 파일

    이것은 당신의 대답은 할 수있다 : 어떻게 레일 응용 프로그램에서 파일을 다운로드

    당신은 트릭 즉, 공용 폴더에 파일을 배치해야한다.

    파일이 제대로 배치 될 때 작동합니다.

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

    컨트롤러를 통해 다운로드

    downlaod의 조치를하고 LINK_TO 컨트롤러 만들기

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

    2.4 레일 :

    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 %>
    
  3. ==============================

    3.파일이 정적 인 경우 공용 폴더에 장소를 (가 변경되지 않는 의미)를.

    파일이 정적 인 경우 공용 폴더에 장소를 (가 변경되지 않는 의미)를.

    그럼 당신은 같은 다운로드 할 수 있습니다

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

    또는 ERB와

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

    해당 파일을 다운로드의 또 다른 이름을주고, 바로 다운로드 옵션에 그 이름을 전달

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

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

  4. ==============================

    4.당신은 단순히이 같은 컨트롤러 액션을 호출 할 수 있습니다

    당신은 단순히이 같은 컨트롤러 액션을 호출 할 수 있습니다

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

    당신의 컨트롤러

    def download_file
     redirect_to paperclip_attachment.file.url
    end
    
  5. ==============================

    5.나는 공공 디렉토리에서 어떤 파일을 다운로드 자동으로 간단한 방법을 찾기 위해 많은 투쟁. 마지막으로 나는이 솔루션을 함께했다. 예를 들면 : 나는 공공 디렉토리 안에 SVG 폴더 내 파일이 있습니다.

    나는 공공 디렉토리에서 어떤 파일을 다운로드 자동으로 간단한 방법을 찾기 위해 많은 투쟁. 마지막으로 나는이 솔루션을 함께했다. 예를 들면 : 나는 공공 디렉토리 안에 SVG 폴더 내 파일이 있습니다.

    Public/svg/Test1.xlsx
    

    내가 액세스하려고하면 지금은로드하고 문제를주고 종이 클립과 경로를 지정합니다. 내가 전체 경로를하려고해도 때 잘 그래서 우리는 그것을 동적 경로 만들 수있는 문제를 제공합니다. 우선 캔 리디렉션되도록 쉽게 호스트의 경로를 가져옵니다.     

    이제 우리는 아래에 공용 폴더처럼의 모든 파일에 액세스 할 수 있습니다 및 패스 ID와 다운로드 옵션을 선택합니다. 다운로드 옵션은 유 다운로드하려는 파일의 이름을 바꿉니다.

    <%= link_to 'Database File', "#{url}/svgs/Test1.xlsx", download: 'Data.xlsx',id: "Link_to_Downlaod" %>
    

    이제 수있는 링크가 우리는 파일을 다운로드하려면 위의 링크를 클릭 할 준비입니다 클릭합니다. 파일 다운로드 자동으로 다음 스크립트를 사용합니다.

      <script type="text/javascript">
        window.onload = document.getElementById('Link_to_Downlaod').click();
      </script>
    </div>
    

    PDF 또는 다른 파일 형식의 경우 그냥 파일 확장자를 변경해야합니다.

  6. from https://stackoverflow.com/questions/13164063/file-download-link-in-rails by cc-by-sa and MIT license