How to set the permission for each file separately for downloading? want to add a functionality of uploading files so that users can download these files.

First is there any module to provide this functionality (Uploading files from admin and then on front end, users can download these files).

Second If I upload some files then can I set the permission on the specific files.
My requirement is that some files will be only downloadable for registered users. The anonymous user could not be able to download the file.
And the 2nd scenario is that some files will be required the admin approval. Means if a user click on the file for download, a notification will be sent to the admin, then if admin approved it then the user can be able to download the file.

Any Idea about this.

Thanks in Advance.
You have to set your site's file management to private, and then use a module or code your own management stuff using the files API.