Я новичок в mod_python и Apache, и у меня возникают проблемы с возвратом файла пользователю после запроса GET. У меня сейчас очень простая настройка, и я надеялся просто открыть файл и записать его в ответ:
from mod_python import apache
def handler(req):
req.content_type = 'application/octet-stream'
fIn = open('response.bin', 'rb')
req.write(fIn.read())
fIn.close()
return apache.OK
Однако, я получаю ошибки, когда использую open (), говоря, что файл не существует (хотя я проверил дюжину раз, что он существует). Это происходит при использовании относительных и абсолютных путей к файлам.
У меня два вопроса:
- Почему не открывается () найти правильный
файлы
- Каков наилучший способ вернуть файл
из файловой системы? (Прошу сделать
уверен, что я не пропустил какой-то лучший способ
использовать mod_python для возврата файла.)
Спасибо
Редактировать: После нахождения этой темы: http://www.programmingforums.org/thread12384.html Я обнаружил, что open () работает для меня, если я перемещаю файл в другой каталог вне дома (я выполнял псевдоним из / home / myname / httpdocs, но это работает, если я использую / данные). Есть идеи, почему это работает?
Редактировать 2: Часть моей ошибки отладки, как запрошено:
MOD_PYTHON ERROR
ProcessId: 13642
Interpreter: '127.0.1.1'
ServerName: '127.0.1.1'
DocumentRoot: '/var/www'
URI: '/test/mptest.py'
Location: None
Directory: '/home/myname/httpdocs/'
Filename: '/home/myname/httpdocs/mptest.py'
PathInfo: ''
Phase: 'PythonHandler'
Handler: 'mptest'
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1537, in HandlerDispatch
default=default_handler, arg=req, silent=hlist.silent)
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1229, in _process_target
result = _execute_target(config, req, object, arg)
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1128, in _execute_target
result = object(arg)
File "/home/myname/httpdocs/mptest.py", line 13, in handler
fIn = open('/home/myname/httpdocs/files/response.bin', 'rb')
IOError: [Errno 2] No such file or directory: '/home/myname/httpdocs/files/response.bin'