Ich verwende mod_xsendfile (v0.12), um statische Dateien zu liefern, wo Django den Zugriff auf die Dateien basierend auf Benutzern und Berechtigungen steuert.XSendFile wird die Dateien in Apache 2.2 nicht liefern
In meiner conf-Datei, die ich habe:
XSendFile On
XSendFilePath e:/documents/
<Directory e:/Documents>
Order allow,deny
Allow from all
</Directory>
In meinem django Code, habe ich die Header wie folgt:
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
Und in meinem Log-Datei erhalte ich:
[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
In dieser Version von mod_xsendfile
,
XSendFileAllowAbove On
erzeugt den Fehler:
Invalid command 'XSendFileAllowAbove', perhaps misspelled or defined by a module
not included in the server configuration
ich davon aus, dass war, weil sie die XSendFilePath
weißen Liste hinzugefügt haben. Hat jemand anderes das zur Arbeit gebracht?
Eine andere Sache, die ich in all dem entdeckt habe, ist, dass der gesamte Pfad Groß-und Kleinschreibung unterscheidet, auch wenn Sie auf Windows sind.Wäre ich auf Linux gewesen, wäre mir das sofort eingefallen, aber unter Windows habe ich diese Probleme verworfen. Der DRIVE LETTER MUSS GROSS sein! – boatcoder