Sunt rulează o aplicație balon pe un sistem Ubuntu 18.04 cu Apache 2 și uWSGI. Când încerc să încărcați fișiere într - un director, acesta nu cu un cod de eroare de 500. Scenariul este scris în __init__.py
și situat la: /var/www/FlaskApp/FlaskApp/__init__.py
. Directorul pentru fișierele încărcate este situat la: /var/www/FlaskApp/FlaskApp/uploads
. Script - ul arată ca următorul:
from flask import Flask, render_template, request, url_for, redirect,
send_from_directory, send_file, flash
from werkzeug.utils import secure_filename
import os
UPLOAD_FOLDER = '/var/www/FlaskApp/FlaskApp/uploads'
#ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/test/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
#if 'file' not in request.files:
#flash('No file part')
#return redirect(request.url)
file = request.files['file']
#if file.filename == '':
#flash('No selected file')
#return redirect(request.url)
#if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
#return redirect(url_for('uploaded_file',
#filename=filename))
return '''
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form method=post enctype=multipart/form-data>
<input type=file name=file>
<input type=submit value=Upload>
</form>
'''
@app.route('/uploads/<filename>')
def uploaded_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'],
filename)
if __name__ == '__main__':
app.run()
Se afișează pagina HTML, dar atunci când fac clic depune după selectarea fișierelor, eșuează. Am încercat să ruleze codul atât cu și fără comentarii, dar încă nu reușește. Cred că eroarea apare la: file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
am încercat , de asemenea , mai multe căi diferite. Ar putea fi ceva în neregulă cu configurația aplicației? Nu cred că am o settings.py reală, în cazul în care ar trebui să conteze.
Multumesc foarte mult pentru răspunsuri
Flaconul a App Error-log arată acest lucru:
ERROR:flask.app:Exception on /test/ [POST], referer: http:the.servers.ip.adress/test/
Traceback (most recent call last):, referer: http:the.servers.ip.adress/test/
File /usr/local/lib/python3.6/dist-packages/flask/app.py, line 2292, in wsgi_app, referer: http:the.servers.ip.adress/test/
response = self.full_dispatch_request(), referer: http:the.servers.ip.adress/test/
File /usr/local/lib/python3.6/dist-packages/flask/app.py, line 1815, in full_dispatch_request, referer: http:the.servers.ip.adress/test/
rv = self.handle_user_exception(e), referer: http:the.servers.ip.adress/test/
File /usr/local/lib/python3.6/dist-packages/flask/app.py, line 1718, in handle_user_exception, referer: http:the.servers.ip.adress/test/
reraise(exc_type, exc_value, tb), referer: http:the.servers.ip.adress/test/
File /usr/local/lib/python3.6/dist-packages/flask/_compat.py, line 35, in reraise, referer: http:the.servers.ip.adress/test/
raise value, referer: http:the.servers.ip.adress/test/
File /usr/local/lib/python3.6/dist-packages/flask/app.py, line 1813, in full_dispatch_request, referer: http:the.servers.ip.adress/test/
rv = self.dispatch_request(), referer: http:the.servers.ip.adress/test/
File /usr/local/lib/python3.6/dist-packages/flask/app.py, line 1799, in dispatch_request, referer: http:the.servers.ip.adress/test/
return self.view_functions[rule.endpoint](**req.view_args), referer: http:the.servers.ip.adress/test/
File /var/www/FlaskApp/FlaskApp/__init__.py, line 27, in upload_file, referer: http:the.servers.ip.adress/test/
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)), referer: http:the.servers.ip.adress/test/
File /usr/local/lib/python3.6/dist-packages/werkzeug/datastructures.py, line 2725, in save, referer: http:the.servers.ip.adress/test/
dst = open(dst, 'wb'), referer: http:the.servers.ip.adress/test/
PermissionError: [Errno 13] Permission denied: '/var/www/FlaskApp/FlaskApp/uploads/an_image.jpg', referer: http:the.servers.ip.adress/test/
referer: http:the.servers.ip.adress/test/
ERROR:flask.app:Exception on /prov/ [POST], referer: http:the.servers.ip.adress/test/
Traceback (most recent call last):, referer: http:the.servers.ip.adress/test/