Only allow specific roles to upload specific extension files How do I restrict users with specific roles to upload files with specific extensions on node edit pages. On my site I have two specific roles editor and animator. 
Conditions are:

Editors can only upload .docx .doc .pdf files while Animators can upload .mp4 .mp3 .jpg files.

I added a validate function with hook_form_alter() and the validate does work but the user has to save the entire form before validation spits out an error about the wrong file extension. I want to get the file extension as soon as the user has finished uploading their file and display the error message before submitting the form but after uploading the file.
I have a quick solution for this using hook_form_alter. 

So in your hook_form_alter you can check the user role and alter the validators key for that field. In my case the field was called field_material

global $user;
$valid_role = 'animator';

if(in_array($valid, $user-&gt;roles)) {
    //Change the extension in the validators key of that upload field
    $form['field_material']['und'][0]['#upload_validators']['file_validate_extensions'][0]  = 'mp4 mp3';  
} 


I am sure there are better solutions but this is quickest one so far for me to get going.