Laste opp filer til Ubuntu server ved hjelp av kolbe mislykkes med 500 Internal server error

stemmer
36

Jeg kjører en kolbe program på en Ubuntu 18.04 system med Apache 2 og uWSGI. Når jeg prøver å laste opp filer til en katalog, mislykkes det med en 500 feilkode. Manuset er skrevet i __init__.pyog ligger på: /var/www/FlaskApp/FlaskApp/__init__.py. Katalogen for opplastede filer ligger på: /var/www/FlaskApp/FlaskApp/uploads. Manuset ser ut som følgende:

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()

Det viser HTML-siden, men når jeg klikker på Send når du har valgt filer, den svikter. Jeg har prøvd å kjøre koden både med og uten kommentarer, men det fortsatt ikke. Jeg tror feilen oppstår på: file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) Jeg har også prøvd flere forskjellige baner. Kan det være noe galt med konfigurasjonen av app? Jeg tror ikke jeg har en reell settings.py, hvis det skulle saken.

Tusen takk for svar

Kolben App Error-loggen viser dette:

 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/
Publisert på 26/02/2019 klokken 21:34
bruker
På andre språk...                            


2 svar

stemmer
0

Ok, jeg fant løsningen. Når du kasse en mappe inne i Flask App, må du gi det flere tillatelser enn standardinnstillingene. I mitt tilfelle bruke WinSCP, jeg bare klikket på hver boks.

Svarte 27/02/2019 kl. 09:48
kilden bruker

stemmer
0

jeg bare teste koden i min egen det fungerer perfekt at du har tillatelse til opplastingsmappen bare gi skrivetilgang til det og banen skal være riktig er det ikke noen annet enn det feil.

Svarte 27/02/2019 kl. 09:57
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more