Итак, я создаю портал входа в систему для загрузки файлов, включая обработку сеансов для каждого сеанса, создавая папку для пользователя и сохраняя файл в этой папке. Я сталкиваюсь с 405 (метод не допускается ошибка, когда я пытаюсь загрузить файлы)
from flask import Flask, redirect, url_for, render_template, request, session,flash
from datetime import timedelta
import subprocess
from werkzeug.utils import secure_filename
import os
import datetime
import urllib.request
app = Flask(__name__,template_folder="Some Template Directory")
app.permanent_session_lifetime = timedelta(minutes=5)
app.secret_key = b'_5#y2L"F4Q8z\n\xec]iasdfffsd/'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'csv'])
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/')
def home():
return render_template('try.html')
@app.route('/login' , methods = ["POST", "GET"])
def login():
if request.method == "POST":
session.permanent = True
user = request.form["name"]
session["abc"] = user
parent_dir = "Directory path for creating sub dir for each session"
global path1
path1= os.path.join(parent_dir,user)
os.makedirs(path1)
return redirect(url_for("user"))
return render_template('login.html')
@app.route('/user' )
def user():
if "pawan" in session:
user = session["abc"]
return f"<h1>{user}</h1>"'<br>' + \
"<b><a href = '/upload'> Click here to uploads the files </a></b>"
else:
return redirect(url_for("login"))
@app.route('/upload')
def upload_form():
return render_template('sessionupload.html')
@app.route('/upload', methods=['POST','GET'])
def upload_file():
if request.method == 'POST':
if request.files:
files = request.files.getlist('files[]')
if files.filename == "":
flash("No file")
return redirect(request.url)
if allowed_file(files.filename):
abcd = secure_filename(files.filename)
files.save(os.path.join(path1, abcd))
flash("file saved")
return redirect(request.url)
render_template('sessionupload.html')
@app.route("/logout")
def logout():
session.pop("abc", None)#pops out the key value of the session , if the is not present then it will print none
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
sessionupload. html:
<!doctype html>
<title>Upload FIles</title>
<h2>Select file(s) to upload</h2>
<p>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
</p>
<form method="post" action="/" enctype="multipart/form-data">
<dl>
<p>
<input type="file" name="files[]" multiple="true" autocomplete="off" required>
</p>
</dl>
<p>
<input type="submit" value="Submit">
</p>
</form>
Я не могу понять, почему ошибка происходит, я даже включаю GET и POST в маршрут загрузки URL? Любые предложения будут высоко оценены. У меня приближается крайний срок:)