It is most likely a permissions issue. Find the user processes running on the site by navigating to your sites wp-content
folder on the server your site is on. Then type this;
ps aux | egrep '(apache|httpd)'
Ignore root, but look at the other users
root 2507 0.0 0.3 423820 14328 ? Ss Aug04 0:51 /usr/sbin/httpd
apache 4653 0.5 1.9 483900 77252 ? S 16:27 0:14 /usr/sbin/httpd
apache 4654 0.5 2.1 500160 84912 ? S 16:27 0:13 /usr/sbin/httpd
apache 4656 0.8 2.0 484708 78712 ? S 16:27 0:21 /usr/sbin/httpd
...
For me it actually was apache (usually www-data). Finally change the users of the uploads
folder to this user;
sudo chown -R apache:apache uploads
(make sure you are in the directory above the uploads folder when running this command)
This will permit the correct user to access this directory using the correct access permissions of 755.
By using the dreadful '777' advice of others, you are simply allowing the correct user to access the directory assigned to the incorrect user - as well as anyone else who can access that directory!