So there is a user or a group of users you wish to grant upload document and read permissions on a document library. As per the best practice here is how you should do it.
4 steps to achieve this:-
1) As mentioned earlier by Alexander , you need to create your custom permission level.
Go to Site Actions > Site Permissions > Permissions Level > Add a Permission Level
Name it "Generic Add Items"
Next select Add Item permission , Open Items , Open Versions and leave the rest of permission levels checked as it is by default.
Sometimes, you may additionally need to check "View layout and application pages" permission.
2) Determine if a custom SharePoint Group needs to be created or not.
If you are planning to give this permission up to 20 users , you can create a SharePoint group and add them in that group. Naming convention of the group may vary but it should resemble their roles as per the document library or the site.
Give read permission to that group at a site level.
More than 20 to 30 users should have a Distributed Lists in Exchange and AD instead of creating SharePoint groups.
3) Stop Permissions Inheritance
GO to the library > Click on the TAB named Library on the ribbon. > Permissions for this Library > Stop Inheriting Permissions
It always recommended to use unique permissions for lists and libraries.
4) Grant unique permissions directly.
On the same page as above , go to grant permissions > select the user or SHAREPOINT group that you need to give permission to. Scroll down way to the bottom of the page and you will find your newly created permission level "Generic Add Item" appear there. Select that permission level and save the form.
Test again. It should work.