app/controllers/alchemy/attachments_controller.rb
# frozen_string_literal: true
module Alchemy
class AttachmentsController < BaseController
before_action :load_attachment
authorize_resource class: Alchemy::Attachment
# sends file inline. i.e. for viewing pdfs/movies in browser
def show
response.headers["Content-Length"] = @attachment.file.size.to_s
send_file(
@attachment.file.path,
{
filename: @attachment.file_name,
type: @attachment.file_mime_type,
disposition: "inline"
}
)
end
# sends file as attachment. aka download
def download
response.headers["Content-Length"] = @attachment.file.size.to_s
send_file(
@attachment.file.path, {
filename: @attachment.file_name,
type: @attachment.file_mime_type
}
)
end
private
def load_attachment
@attachment = Attachment.find(params[:id])
end
end
end