Here's the solution for posterity. There were two problems to solve: Recall that I'm using CarrierWave. 1) Heroku allows permissions only to the tmp directory. I needed to specify the cache dir on the attachment uploader. 2) I needed to set content headers for s3. You can specify them when you upload a file, and Amazon will provide them in the content headers when you download a file.
So in my model (Mongoid), I have class Report include Mongoid::Document ... mount_uploader :attachment, AttachmentUploader And in my uploader, I have: class AttachmentUploader < CarrierWave::Uploader::Base def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def s3_headers { "Content-Disposition" => "attachment; filename=export.csv;" } end # Use Heroku's temp folder for uploads def cache_dir "#{Rails.root}/tmp/uploads" end end The s3 headers above set the content disposition type to attachment, so it will download as a file instead of a page. The filename will set the filename upon download. The cache_dir sets the temp holding area for Heroku, since the uploads/ directory is not public. To upload an attachment, I say report.attach. That does this: def attach(filename) self.attachment = File.open(filename) self.save end Hope this helps. -bt On May 5, 10:51 am, batate <br...@rapidred.com> wrote: > I am uploading reports, via Carrierwave, to Amazon s3, but with > protected urls. I'm able to process the upload fine, and I can see the > file on Amazon, but it renders as text. I want it to trigger a browser > download instead of just render the text. > > When I was generating the file via a template, I could control the > headers and force the right download like this: > > helper_method :render_csv > def render_csv(file, view=nil) > filename = "export" > filename = "user_export" if params[:action] == "process_users" > filename ||= params[:action] > filename += '.csv' > > (request.env['HTTP_USER_AGENT'] =~ /msie/i) ? > set_ie_headers( filename ) : set_headers( filename ) > render :layout => false, :action => view > end > > But now, I'm downloading from s3. > > Any suggestions? -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to heroku@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.