Я размещаю веб-приложение на своем сервере 8Ubuntu 18.04, используя Flask.
Цель моего приложения - загрузить изображение (или любые файлы на данный момент). Однако при попытке загрузить файл в папку img я получаю ошибку разрешения:
ERROR:cloud:Exception on / [POST], referer: http://192.168.1.35/
Traceback (most recent call last):, referer: http://192.168.1.35/
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 2447, in wsgi_app, referer: http://192.168.1.35/
response = self.full_dispatch_request(), referer: http://192.168.1.35/
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1952, in full_dispatch_request, referer: http://192.168.1.35/
rv = self.handle_user_exception(e), referer: http://192.168.1.35/
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1821, in handle_user_exception, referer: http://192.168.1.35/
reraise(exc_type, exc_value, tb), referer: http://192.168.1.35/
File "/usr/local/lib/python3.6/dist-packages/flask/_compat.py", line 39, in reraise, referer: http://192.168.1.35/
raise value, referer: http://192.168.1.35/
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1950, in full_dispatch_request, referer: http://192.168.1.35/
rv = self.dispatch_request(), referer: http://192.168.1.35/
File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1936, in dispatch_request, referer: http://192.168.1.35/
return self.view_functions[rule.endpoint](**req.view_args), referer: http://192.168.1.35/
File "/var/www/cloud/cloud/__init__.py", line 15, in upload_image, referer: http://192.168.1.35/
image.save(os.path.join(app.config["IMAGE_UPLOADS"], image.filename)), referer: http://192.168.1.35/
File "/usr/local/lib/python3.6/dist-packages/werkzeug/datastructures.py", line 3066, in save, referer: http://192.168.1.35/
dst = open(dst, "wb"), referer: http://192.168.1.35/
PermissionError: [Errno 13] Permission denied: '/var/www/cloud/cloud/static/img/uploads/3E5A33B5-7E19-461A-B0C5-6835080675E7.jpeg', referer: http://192.168.1.35/
, referer: http://192.168.1.35/
AH00491: caught SIGTERM, shutting down
AH00489: Apache/2.4.29 (Ubuntu) mod_wsgi/4.5.17 Python/3.6 configured -- resuming normal operations
AH00094: Command line: '/usr/sbin/apache2'
Итак, я понимаю, что есть ошибка разрешения. Как это можно исправить?
Моя файловая структура следующая:
My code (python3) for __init__.py
is the following :
import os
from flask import Flask, flash, request, redirect, url_for, render_template
app = Flask(__name__)
app.config["IMAGE_UPLOADS"] = "/var/www/cloud/cloud/static/img/uploads"
@app.route("/", methods = ["GET", "POST"])
def upload_image():
if request.method == "POST":
if request.files:
image = request.files["image"]
print(image)
image.save(os.path.join(app.config["IMAGE_UPLOADS"], image.filename))
return "IMAGE SAVED"
return render_template('upload-image.html')
if __name__ == "__main__":
app.run()
and for upload-image.html i is the following :
<!DOCTYPE html>
ПРИВЕТ Это тест Выберите изображение Загрузить
Я не получаю эту ошибку, когда он работает локально, а только когда я развертываю t чтобы он был доступен на компьютерах в той же локальной сети, что и мой.
Я следую этому руководству: https://www.youtube.com/watch?v=6WruncSoCdI