It's pretty easy to do this with java and mongo.
First you need to decide if a normal document will always be big enough. The current document limit is 4MB, and will soon be increased to 16MB when 1.8 is released. If you think you may ever need bigger documents than that then GridFS may be a good option.
I use this approach for photo sharing, but it would work for serving any type of file from mongo (or any source).
You will need to use a multipart post for upload - extract the file and store in mongo.
In order to download a file, like a csv file, it needs to have a url. You can then have an <a> tag pointing at the url on your web page, and if everything is set up correctly clicking the link will initiate a download.
These document urls should be mapped to a servlet in web.xml. The servlet should use the request parameters to work out which document to fetch, then set the content type, length, headers, etag etc as appropriate and write the document to the response.getOutputStream(). If you want to store various types of documents (i.e. more than just csv) you can also associate metadata, such as mime-type with the document.
Hope this helps.
Keith.