2015-05-03 3 views
0

скрипт cgi python позволяет мне искать sqlite db и представляет мне ссылку на файл для загрузки. Файлы - это все локальные файлы в каталоге за пределами веб-каталога. Я попробовал начать с:Python - скачать локальный файл

if os.access(filepath, os.R_OK): 

Это уже бросил мне арг ошибки = 13, разрешение отказано.

Далее я думал, как я должен поступить:

file_to_open = "файл: //" + file_to_download

urllib.urlopen (file_to_open)

К сожалению, мне приходится иметь дело с первой ошибкой. Как я уже испытанные несколько вещей:

  • Файл присутствует, в противном случае я получаю другую ошибку

  • CHMOD 777 Чауна

  • файл и каталог в Апач работает пользователь

Я застрял и не уверен, если и как позволить Python загрузить файл за пределами веб-сайта.

ответ

0

Если файл должен быть доступен через веб-приложение, он должен быть доступен для чтения пользователем apache. Это по дизайну - все, что не читается пользователем Apache, недоступно из Интернета.

Так как вы, вероятно, не хотят chown эти файлы пользователя Apache (который потенциально может позволить веб-пользователям изменять их), то есть в основном два варианта:

  • Установить группу файлов в группе Апач пользователя (с помощью chgrp) и сделать их читаемыми любым пользователем этой группы (chmod g+r FILE...), или

  • сделать файлы читаемыми для любого процесса на сервере (chmod o+r FILE...).

Убедитесь, что пользователь апач имеет по крайней мере выполнить (+x) права на все родительские каталоги файлов или это не будет работать.

Вы также можете использовать отдельную услугу для предоставления этих файлов в веб-приложении, но это значительно сложнее (и вам, вероятно, это не понадобится).

Смежные вопросы