Загрузка файлов на сервер Ubuntu с помощью колба не удается 500 внутренняя ошибка сервера

голоса
36

Я бегу приложение опоки на системе Ubuntu 18.04 с Apache 2 и uWSGI. При попытке загрузить файлы в каталог, он терпит неудачу с кодом 500 ошибок. Сценарий написан в __init__.pyи находится по адресу: /var/www/FlaskApp/FlaskApp/__init__.py. Каталог для загрузки файлов находится по адресу: /var/www/FlaskApp/FlaskApp/uploads. Сценарий выглядит следующим образом :

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

Он отображает страницу HTML, но когда я нажимаю отправить после выбора файлов, он выходит из строя. Я попытался запустить код , так и без комментариев, но она до сих пор не удается. Я думаю , что ошибка происходит на: file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) Я также попробовал несколько различных путей. Может ли быть что - то неправильно с конфигурацией приложения? Я не думаю , что у меня есть реальный settings.py, если это должно иметь значение.

Большое спасибо за ответы

Колба App Error-журнал показывает это:

 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/
Задан 26/02/2019 в 21:34
пользователем
На других языках...                            


2 ответов

голоса
0

Хорошо, я нашел решение. Когда вы клеть папки внутри Колба App, вы должны дать ему больше разрешений, чем по умолчанию. В моем случае с помощью WinSCP, я просто нажал на каждой коробке.

Ответил 27/02/2019 в 09:48
источник пользователем

голоса
0

я просто проверить код в моем собственном он отлично работает убедитесь, что у вас есть разрешение на папку загрузки только дать разрешение на запись в него, и путь должен быть правильным нет никакой ошибки, кроме него.

Ответил 27/02/2019 в 09:57
источник пользователем

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