[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.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.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.파일이 정적 인 경우 공용 폴더에 장소를 (가 변경되지 않는 의미)를.
파일이 정적 인 경우 공용 폴더에 장소를 (가 변경되지 않는 의미)를.
그럼 당신은 같은 다운로드 할 수 있습니다
<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.당신은 단순히이 같은 컨트롤러 액션을 호출 할 수 있습니다
당신은 단순히이 같은 컨트롤러 액션을 호출 할 수 있습니다
<%= 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.나는 공공 디렉토리에서 어떤 파일을 다운로드 자동으로 간단한 방법을 찾기 위해 많은 투쟁. 마지막으로 나는이 솔루션을 함께했다. 예를 들면 : 나는 공공 디렉토리 안에 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 또는 다른 파일 형식의 경우 그냥 파일 확장자를 변경해야합니다.
from https://stackoverflow.com/questions/13164063/file-download-link-in-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 차이 - %> 및 %> 레일 [중복] (0) | 2020.02.09 |
---|---|
[RUBY-ON-RAILS] '존재'와 액티브 레코드 쿼리 협회 레일 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 암호가없는 고안 사용자 업데이트 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 3 유증 레일, CURRENT_USER는 모델에 액세스 할 수 없습니다? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 레일 default_scope 재정의 (0) | 2020.02.09 |