Как передать изображение, загруженное с помощью колпачка, на другую страницу - PullRequest
0 голосов
/ 15 апреля 2019

Итак, я загрузил изображение в папку загрузки с помощью dropzone и я хочу передать его на мою страницу makeMeme, чтобы затем я мог отобразить это изображение с помощью тега html img.Вот как я загружаю свое изображение и пытаюсь его пропустить.Однако, когда я запускаю базовый img take и пытаюсь ссылаться на файл, я получаю сообщение об ошибке.Вот ошибка атрибута, которую я получаю:

AttributeError: 'NoneType' object has no attribute 'filename'

Вот моя главная страница Python.

import os
from flask import Flask, render_template,request, url_for
from flask_dropzone import Dropzone


app = Flask(__name__)
app.secret_key = 'key'

dir_path = os.path.dirname(os.path.realpath(__file__))



app.config.update(
    UPLOADED_PATH=os.path.join(dir_path, 'uploads'),
    # Flask-Dropzone config:
    DROPZONE_ALLOWED_FILE_TYPE='image',
    DROPZONE_MAX_FILE_SIZE=3,
    DROPZONE_MAX_FILES=20,
    DROPZONE_UPLOAD_ON_CLICK=True
)
app.config['DROPZONE_REDIRECT_VIEW'] = 'makeMeme'

dropzone = Dropzone(app)

@app.route('/upload', methods=['POST', 'GET'])
def upload():
    if request.method == 'POST':
        f = request.files.get('file')
        file = f.save(os.path.join(app.config['UPLOADED_PATH'], f.filename))
    return render_template('upload.html', file_name = file)

@app.route('/makeMeme', methods=['POST', 'GET'])
def makeMeme():
    return render_template("makeMeme.html")

1 Ответ

0 голосов
/ 15 апреля 2019

Сначала создайте templates и static папку
Затем скопируйте upload.html и makeMeme.html внутри шаблонов
Затем выполните app.py
Я надеюсь, что это решит вашу проблему

app.py

import os
from flask import Flask, render_template,request, url_for
from flask_dropzone import Dropzone

app = Flask(__name__)
app.secret_key = 'key'

dir_path = os.path.dirname(os.path.realpath(__file__))


app.config.update(
    UPLOADED_PATH=os.path.join(dir_path, 'static'),
    # Flask-Dropzone config:
    DROPZONE_ALLOWED_FILE_TYPE='image',
    DROPZONE_MAX_FILE_SIZE=3,
    DROPZONE_MAX_FILES=20
)
app.config['DROPZONE_REDIRECT_VIEW'] = 'makeMeme'

dropzone = Dropzone(app)

filename = None

@app.route('/upload', methods=['POST', 'GET'])
def upload():
    global filename
    file = None
    if request.method == 'POST':
        f = request.files.get('file')
        file = f.save(os.path.join(app.config['UPLOADED_PATH'], f.filename))
        filename = f.filename
    return render_template('upload.html')

@app.route('/makeMeme', methods=['POST', 'GET'])
def makeMeme():
    global filename
    return render_template("makeMeme.html", file_name = filename)

app.run(debug=True)

upload.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Flask-Dropzone Demo</title>
  {{ dropzone.load_css() }}
  {{ dropzone.style('border: 2px dashed #0087F7; margin: 10%; min-height: 400px;') }}
</head>
<body>
  {{ dropzone.create(action='upload') }}
  {{ dropzone.load_js() }}
  {{ dropzone.config() }}
</body>
</html>

makeMeme.html

<!DOCTYPE html>
<html>
    <img src="{{url_for('static',filename=file_name)}}" alt="Fail">
</html>
...