[Mongrel] Uploading Large (100mb+) files

cremes.devlist at mac.com cremes.devlist at mac.com
Tue Nov 28 15:20:06 EST 2006


On Nov 28, 2006, at 1:50 PM, Matt White wrote:

> Rogelio,
>
> It will arrive in Rails just like any other uploaded file... It  
> will show up in params[:model][:file_field], or whatever you've  
> named your input file field. Until you do something else with it,  
> it only lives as a file in /tmp/. You need to move it somewhere  
> else, though, because Rails will do away with it once the request  
> is complete :)
>
> Something like:
>
> @file = params[:model][:file_field]
> File.open("/path/to/#{@file.original_filename}", "wb") { |file|  
> file.write(@file.read) }
>
> Would copy the file from it's temp location to /path/to/ 
> original_filename on your box. As you were wondering, it will end  
> up on whatever machine is hosting the mongrel that the client was  
> connected to. So, you may need to scp it to an assets server or  
> something when it's done... That's as far as I can go without  
> knowing more about your setup ;)
>

This is what I'd like to improve in Mongrel. It's really wasteful to  
write the file to a TempFile and then rewrite it again elsewhere. For  
really big files (multi-gigabyte) the performance hit would be  
tremendous.

I'm thinking furiously about how to properly manage this. If anyone  
has any ideas, feel free to share them on the list.

cr



More information about the Mongrel-users mailing list