The default role sitecore/Sitecore Client Authoring, and hence sitecore/Author, does not have read access to the /sitecore/content/Applications/Dialogs/Upload item in the Core database required for Classic Upload dialog. The following exception occurs while trying to upload media through the Classic Upload dialog under an unauthorized user:
[AccessDeniedException: Application access denied.] Sitecore.Diagnostics.Assert.HasAccess(Boolean accessAllowed, String message) +114 Sitecore.Diagnostics.Assert.CanRunApplication(String application) +92 Sitecore.Shell.Applications.Dialogs.Attach.AttachForm.OnLoad(EventArgs e) +53 [TargetInvocationException: Exception has been thrown by the target of an invocation.] System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +128 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +146 System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) +34 Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +130 Sitecore.Reflection.ReflectionUtil.CallMethod(Type type, Object obj, String methodName, Boolean includeNonPublic, Boolean includeInherited, Boolean includeStatic, Object[] parameters) +261 Sitecore.Reflection.ReflectionUtil.CallMethod(Type type, Object obj, String methodName, Boolean includeNonPublic, Boolean includeInherited, Object[] parameters) +113 Sitecore.Reflection.ReflectionUtil.CallMethod(Object obj, String methodName, Boolean includeNonPublic, Boolean includeInherited, Object[] parameters) +124 Sitecore.Web.UI.Sheer.ClientPage.OnLoad(EventArgs e) +424 Sitecore.Shell.Web.UI.SecurePage.OnLoad(EventArgs e) +63 Sitecore.Shell.Applications.Dialogs.Attach.AttachPage2.OnLoad(EventArgs e) +44 System.Web.UI.Control.LoadRecursive() +216 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4004