Getting file size on upload

I get the file size of images by

imgmb = File.size("#{RAILS_ROOT}/..../#{file}")

But that's when I have the file on the server. Can you test that before in order to stop the file upload if it's really heavy? How does that work?

I get the file size of images by

imgmb = File.size("#{RAILS_ROOT}/..../#{file}")

But that's when I have the file on the server. Can you test that
before in order to stop the file upload if it's really heavy? How does that work?

It has to be done upstream of rails (apache has a file upload limit
for example).

Fred

How are the files loaded onto the server?

For example, if they are coming in from users as email attachments you could use attachment_fu to set the maximum size in the model:

class Photo < ActiveRecord::Base   has_attachment :storage => :file_system,     .     .     :size => 1..5.megabytes   validates_as_attachment end

(paperclip probably has similar functionality but I have not personal experience with it)

Just for clarification, this will not prevent the file being uploaded into the server's memory but it will prevent it from being saved to the file system.

Just to clarify further. If the file is large enough, it WON'T be kept in memory, instead it will be written to a temp file and the handle for that will be passed in the params. I don't know of any way inside Rails to stop a file being uploaded, but suspect you could get the web server to limit how much it would upload for a single request.

Brendon.