2012-02-10 23 views
5

Câu hỏi của người mới bắt đầu: Làm cách nào để trả lại tệp từ bộ điều khiển trong đường ray?Trả lại tệp từ đường ray

Tôi quen thuộc với các đối tượng JSON trả về/hiển thị. Tuy nhiên tôi chưa bao giờ quay trở lại/trả về một tập tin w/một phần mở rộng tùy ý.

Từ đọc xung quanh SO, có vẻ như render :nothing => true có thể hữu ích. Tôi chỉ đang tìm một số hướng dẫn hoặc tài liệu liên quan.

+0

có thể trùng lặp: http://stackoverflow.com/questions/1213957/exposing-files-from-a-service-through-a-rails-application – Baldrick

Trả lời

10

Bạn có thể sử dụng đường ray dựng sẵn send_file hoặc send_data.

Để dòng một tập tin (ví dụ như đối với một thiết bị đầu cuối tập tin proxy), sử dụng send_file:

send_file("#{RAILS_ROOT}/path/to/file/on/server", 
    :filename => "client-suggested-filename", 
    :type => "mime/type") 

Để dòng dữ liệu được tạo (ví dụ cho một pdf được tạo ra), sử dụng send_data:

send_data(your_data, 
    :filename => "client-suggested-filename", 
    :type => "mime/type") 

Các phần mở rộng tệp và loại mime không cần phải khớp, nhưng chúng có thể chỉ phù hợp với mong đợi của người dùng cuối. Ví dụ: nếu bạn đang gửi với loại mime application/pdf, bạn thực sự nên đặt :filename thành something.pdf.

Nếu bạn không chắc chắn loại mime dành cho tệp bạn đang gửi, bạn có thể kiểm tra this wikipedia page hoặc sử dụng đá quý mime-types. (Hoặc nếu bạn đang đọc từ một cơ sở dữ liệu lưu trữ loại mime, hãy sử dụng nó).

+0

'send_data' có vẻ tốt. Cảm ơn! – SundayMonday

Các vấn đề liên quan