Сохранить файл на веб-сервер из 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, на котором работает, не имеет доступа на запись в папку. Необходимо назначить либо роль, либо пользователя веб-сервера. Убедитесь, что вы предоставляете только доступ на запись, а не на запись + выполнение.