Я роблю щось дуже схоже. Якщо ви працюєте з інфраструктурою, яка здатна до такої конфігурації, я рекомендую подати долю на вашому файловому сервері (Linux або Windows Server) і просто встановити її в публічний шлях файлів Drupal, де б не був публічний каталог для цього конкретного поля.
Наприклад, візьміть таку конфігурацію Samba (знайдена в /etc/samba/smb.conf, якщо ви запускаєте файловий сервер на базі Linux). Це відбувається в самому кінці файлу після всіх інших параметрів конфігурації:
[data]
comment = Data directory
browseable = yes
writable = yes
valid users = "@DOMAIN\Domain Admins"
path = /data
create mask = 0664
force create mode = 0664
valid users
Синтаксис там говорить «дозволяє цю групу користувачів» , щоб отримати доступ до цього ресурсу. У цьому випадку ми використовуємо PAM для підключення нашого файлового сервера до Active Directory, і ця конкретна група стає доступною після того, як ви підключите їх.
На своєму веб-сервері, незалежно від розміщення вашого сайту Drupal, перейдіть до каталогу загальнодоступних файлів. Скажіть, що конкретне поле, для якого доступні файли, є загальнодоступним: // field_with_20k_files /. Ви б запустили подібну команду mount так, як:
sudo mount -t cifs -o user=domainadministrator,uid=domainadministrator,gid=apache //fileserver/data /path/to/field_with_20k_files
У мене gid
встановлено будь-який процес, на якому працює веб-сервер, щоб він мав доступ до цього каталогу. Швидше за все, ви хочете переконатися, що веб-служба має доступ до читання та запису на веб-сервер, насправді здатна завантажувати файли.