Сохранить файл на веб-сервер из POST-запроса
я делаю запрос post с некоторым javascript для скрипта python в моем /var/www/cgi-bin
на моем веб-сервере, а затем в этом скрипте python я хочу сохранить файл изображения в папку html, чтобы его можно было позже получить.
находится по адресу /var/www/html
, но сейчас единственный способ, которым я знаю, как это сделать, - установить скрипт python в chmod 777
что я не хочу делать.
Итак, как еще я могу сохранить файл, который я беру с моей веб-страницы с помощью javascript, а затем отправить на сервер с помощью javascript через POST?
В настоящее время, когда я это делаю, я получаю сообщение об ошибке, что у python нет разрешения на сохранение, так как его chmod 755
.
Я вот код python, я знаю, что он работает, так как ошибка просто говорит, что у меня нет разрешения на запись файла
fh = open("/var/www/html/logo.png", "wb")
fh.write(photo.decode('base64'))
fh.close()
2 ответов
если вы не хотите изменять разрешение этого каталога на 777
, вы можете изменить владельца каталога на пользователя HTTP-сервера, тогда пользователь вашего веб-приложения сможет записать файл в этот каталог, потому что у них есть rwx - 7
разрешения каталога.
чтобы сделать это, через (так как вы используете Apache в качестве веб-сервера, помните логин как ' root):
chown -R apache:apache /var/www/cgi-bin/
помните, что тогда только и root
и rwx
к этому каталог, а другие имеет rx
.
и эта команда означает:
chown - change the owner of the directory
-R - operate on files and directories recursively
apache:apache - apache user, apache group
/var/www/cgi-bin/ - the directory
попробовать man chown
команда для проверки страницы руководства chown
и узнать больше, вот онлайн версия.
Если вам нужно изменить его обратно, я думаю, что пользователь по умолчанию этого каталога root
. Итак, войдите как root
и выполните команду:
chown -R root:root /var/www/cgi-bin/
мы решили проблему в чат комната.
сообщение об ошибке непосредственно указывает на роль / использование сервера python, на котором работает, не имеет доступа на запись в папку. Необходимо назначить либо роль, либо пользователя веб-сервера. Убедитесь, что вы предоставляете только доступ на запись, а не на запись + выполнение.