Я использую mod_xsendfile (v0.12) для обслуживания статических файлов, в которых Django контролирует доступ к файлам на основе пользователей и разрешений.XSendFile не будет обслуживать файлы в Apache 2.2
В моем файле конф, у меня есть:
XSendFile On
XSendFilePath e:/documents/
<Directory e:/Documents>
Order allow,deny
Allow from all
</Directory>
В моем Джанго коде я установить заголовки вроде так:
assert(isinstance(filename, FieldFile))
xsendfile = filename.name
if(platform.system() == 'Windows'):
xsendfile = xsendfile.replace('\\', '/')
response = HttpResponse()
response['X-Sendfile'] = xsendfile
mimetype = mimetypes.guess_type(xsendfile)[0]
response['Content-Type'] = mimetype
response['Content-Length'] = filename.size
И в моем файле журнала я получаю:
[Fri Oct 22 08:54:22 2010] [error] [client 192.168.20.34] (20023)The given path
was above the root path: xsendfile: unable to find file:
e:/Documents/3/2010-10-20/TestDocument.pdf
В этой версии mod_xsendfile
,
XSendFileAllowAbove On
генерирует ошибку:
Invalid command 'XSendFileAllowAbove', perhaps misspelled or defined by a module
not included in the server configuration
Я предположил, что это потому, что они добавили XSendFilePath
белый список. Кто-нибудь еще заработал?
Другое, что я обнаружил во всем этом, что весь путь чувствителен к регистру, даже если вы находитесь на окнах.Если бы я был на Linux, который бы сразу пришелся на меня, но на окнах я отбросил эти проблемы. ПИСЬМО ПРИВОДА ДОЛЖЕН БЫТЬ ВЕРХНИЙ! – boatcoder