You could have a look at
MogileFS which uses webdav to upload the files to whatever server is available, then later syncs the servers so that everything should be stored everywhere. When serving the files, it chooses the servers based on response, and so should distribute the load efficiently.
It would be transparent to the user, and just relies on ordinary http hosts.
Clint