cập nhật sau khi bình luận
Vì bạn muốn để phục vụ các tập tin địa phương, chỉ cần đặt chúng bên ngoài/public/folder và bên ngoài của bất kỳ/tài sản/thư mục và bạn nên được tốt. Bạn có thể đọc thêm về cộng đồng và tài sản thư mục ở đây: Section 2 How to use the Asset Pipeline Hãy nói rằng:
/private/
Tôi tin Section 11 send_file cũng được sử dụng trong vì vậy câu hỏi được liên kết trong câu trả lời ban đầu của tôi dưới đây vẫn là cách để bạn có thể cung cấp quyền truy cập vào tệp thông qua bộ điều khiển thay vì tĩnh. Chuyển thể từ các tài liệu:
send_file("#{Rails.root}/private/#{filename}",
:filename => "#{filename}",
:type => "application/pdf", #for example if pdf
:disposition => 'inline') #send inline instead of attachment
câu trả lời gốc phục vụ từ xa cùng với send_file dưới đây
Về 1) tập tin riêng cho các ứng dụng Bạn có thể khóa các tập tin cá nhân trong một hệ thống như Amazon S3 cung cấp quyền truy cập được ủy quyền như Callmeed giải thích trong this SO question. Sau đó, chỉ ứng dụng của bạn mới có thể cho phép truy cập vào một tệp.
Về 2) cũng tiếp cận được các quản trị viên
Vấn đề với chỉ sử dụng một phần 1) là nó mở ra các file trong một khoảng thời gian hạn chế trong thời gian đó tôi cho rằng họ là công bố rộng rãi. Vì vậy, nếu bạn muốn nhận được xung quanh đó, tôi nghĩ rằng bạn cần phải thực hiện các giải pháp từ Pavel Shved thực sự trong cùng một câu hỏi SO ở trên.
Trong giải pháp đó, tệp được cung cấp qua tuyến đường/bộ điều khiển cung cấp dữ liệu nhị phân của tệp thay vì sử dụng URL trỏ đến tệp.
giải pháp kết hợp
Đọc tập tin từ S3 chỉ với ứng dụng của bạn được phép làm việc tiếp cận này (không mở nó công khai). Sau đó cung cấp dữ liệu trực tiếp thông qua bộ điều khiển có thể cho phép bất cứ ai bạn muốn.
Hãy cẩn thận
- Cung cấp dữ liệu nhị phân trực tiếp từ bộ điều khiển có vẻ như nó sẽ giết hiệu suất của các ứng dụng nếu nó được sử dụng thường xuyên, nhưng tôi chưa bao giờ thử nó.
- Nếu bạn có thể tìm cách đơn giản hơn để thực hiện phần 1), phần 2) sẽ vẫn làm việc với giải pháp
Bạn có cần phần 1) tệp được sử dụng trong nội dung đầu ra không? – KobeJohn