将文件从 POST 请求保存到网络服务器

Save File to Webserver from POST Request

我正在向我的网络服务器 /var/www/cgi-bin 中的 python 脚本发出 post 请求,其中包含一些 javascript,然后在此 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()

错误消息直接表明 role/use python 服务器 运行 没有对该文件夹的写入权限。您需要分配角色或 Web 服务器用户。确保只授予写访问权限,而不是写 + 执行访问权限。

如果您不想将该目录的权限更改为777,您可以将该目录的所有者更改为您的 HTTP 服务器用户,那么您的网络应用程序的用户将能够将文件写入该目录,因为他们具有该目录的 rwx - 7 权限。

为此,通过(因为您使用 Apache 作为 Web 服务器,请记住以 `root 身份登录):

chown -R apache:apache /var/www/cgi-bin/

请记住,只有用户 apacheroot 拥有该目录的 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 的手册页并了解更多信息,here's a online version


如果你需要改回来,我想那个目录的默认用户是root。所以以 root 登录,然后 运行 命令:

chown -R root:root /var/www/cgi-bin/

We were solved the problem in chat room.