2013-09-18 3 views
1

С клиентской стороны я отправляю изображение через сообщение от form enctype=multipart/form-data, а на стороне сервера я сохраняю его в каталоге. Все это работает локально на моем компьютере и работает колбе прямо с python app.py.Flask, Apache, mod_wsgi: невозможно сохранить файл на стороне сервера

Вот моя ссылка для настройки сохранение файлов:

http://flask.pocoo.org/docs/patterns/fileuploads/

На фактическом сервере, я запуская его с Apache и mod_wsgi, который я создал в соответствии с этим сайтом:

http://flask.pocoo.org/docs/deploying/mod_wsgi/

для разрешения каталогов Я попытался chown -R 777 и chown -R www-data:www-data, где соответствующий Apache код для пользователей выглядит следующим образом: WSGIDaemonProcess app user=www-data group=www-data threads=5.

Однако, после всего этого я все еще не могу получить файл для сохранения. Я просто получаю 500 HTTP-ошибок обратно в том месте, где он пытается сохранить файл.

Вот соответствующий код Колба:

UPLOAD_FOLDER = '/images/' 
app = Flask(__name__) 
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 

@app.route('/upload_ocr_images', methods=['GET', 'POST']) 
def upload_images(): 
    if request.method == 'POST': 
     files = request.files.getlist("images[]") 
     for file in files: 
      if allowed_file(file.filename): 
       filename = secure_filename(file.filename) 
       file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) 
    return redirect(url_for('home')) 

На данный момент я интересно, если есть что-то мне нужно быть установка на стороне Apache вещей.

+0

Похоже, это вопрос путь. Можете позаботиться об этом с абсолютным путем или http://stackoverflow.com/questions/12081789/pythons-working-directory-when-running-with-wsgi-and-apache – MCH

ответ

3

Youre использует /uploads как ваш путь. Это означает, что вы пытаетесь загрузить в каталог с именем /uploads на корневом уровне вашей файловой системы.

Это обычно неправильно и обычно это ошибка.

Если вы имеете в uploads папке под структуру файла приложения колбы, то вы должны создать путь с помощью app.root_path который содержит абсолютный путь к приложению.

Что-то вроде

file.save(os.path.join(app.root_path, '/uploads', filename)) 
Смежные вопросы