当 Flask 服务器保存图像文件时如何解决获取 "permission denied" 的问题
How do I fix problem with getting "permission denied" when Flask server is saving an image file
Flask 在我们的服务器上保存图像文件时遇到问题。我们已确保我们尝试写入的目录具有写入权限。我们使用 chmod images 777。
但是我们得到“权限被拒绝”。
我做了“chmod 777 images”目录
ls -l 结果是
drwxrwxrwx 2 someuser someuser 4096 2021 年 7 月 16 日图像
提交文件的表单结果:
相同的响应:权限被拒绝
以下是我们拥有的相关代码片段:
<form action="/someurl" method="post" enctype="multipart/form-data" id="workform">
<input type="file" name="photobefore” />
<input type="file" name="photoafter" />
<input type=“submit” />
</form>
服务器:
@main_blueprint.route(‘/someurl’, methods=['GET', 'POST'])
def workperformed():
message = “submitted”
before = ""
after = ""
try:
if len(request.files) > 0:
for name in request.files:
file = request.files[name]
if name == 'photobefore':
before = file.filename
if name == 'photoafter':
after = file.filename
if not file.filename == '':
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
except Exception as e:
message = "dir:" + os.getcwd() + " error:" + str(e)
return message
结果:
dir:/ error:[Errno 13] 权限被拒绝:'/home/someuser/public_html/mydefensiblespace.org/html/templates/static/images/20190721_184017_HDR.jpg'
Web 服务器(假设 Ubuntu 上的 Apache 或 Nginx)需要是您保存图像的文件夹的所有者
chown -R www-data:www-data /path/to/folder
我相信 Nginx 也需要该文件夹才能执行
chmod +x /path/to/folder
此外,由于您的文件夹路径在 /var/www
之外,因此您需要在虚拟主机中添加一个指令
<VirtualHost *:80>
ServerName domain.com
# ...
<Directory /path/to/folder>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Flask 在我们的服务器上保存图像文件时遇到问题。我们已确保我们尝试写入的目录具有写入权限。我们使用 chmod images 777。 但是我们得到“权限被拒绝”。
我做了“chmod 777 images”目录 ls -l 结果是 drwxrwxrwx 2 someuser someuser 4096 2021 年 7 月 16 日图像
提交文件的表单结果: 相同的响应:权限被拒绝
以下是我们拥有的相关代码片段:
<form action="/someurl" method="post" enctype="multipart/form-data" id="workform">
<input type="file" name="photobefore” />
<input type="file" name="photoafter" />
<input type=“submit” />
</form>
服务器:
@main_blueprint.route(‘/someurl’, methods=['GET', 'POST'])
def workperformed():
message = “submitted”
before = ""
after = ""
try:
if len(request.files) > 0:
for name in request.files:
file = request.files[name]
if name == 'photobefore':
before = file.filename
if name == 'photoafter':
after = file.filename
if not file.filename == '':
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
except Exception as e:
message = "dir:" + os.getcwd() + " error:" + str(e)
return message
结果: dir:/ error:[Errno 13] 权限被拒绝:'/home/someuser/public_html/mydefensiblespace.org/html/templates/static/images/20190721_184017_HDR.jpg'
Web 服务器(假设 Ubuntu 上的 Apache 或 Nginx)需要是您保存图像的文件夹的所有者
chown -R www-data:www-data /path/to/folder
我相信 Nginx 也需要该文件夹才能执行
chmod +x /path/to/folder
此外,由于您的文件夹路径在 /var/www
之外,因此您需要在虚拟主机中添加一个指令
<VirtualHost *:80>
ServerName domain.com
# ...
<Directory /path/to/folder>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>