[PYTHON] Bild-Uploader mit Flasche

Erstellen Sie einen einfachen Bild-Uploader

Da ich das letzte Mal einen Twitter-Posting-Client erstellt habe, werde ich die Installation von Flask unterlassen.  http://qiita.com/Gen6/items/ff1d163acf0fa7687454

Erstellen Sie eine Vorlage

index.html


{% extends "base.html" %}
{% block content %}
<form method="post" action="/send" enctype="multipart/form-data">
  <input type="file" id="img_file" name="img_file" class="col-sm-4">
  <input type="submit" value="Senden" class="btn">
</form>
  {% if img_url %}
<p><img src="{{ img_url }}"></p>
  {% endif %}
{% endblock %}

enctype = "mehrteilig / Formulardaten" ist wichtig.

base.html


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/static/css/style.css">
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
    <title>File</title>
</head>
<body>
  <div class="container">
    <div class="row">
        {% block content %}
        {% endblock %}
    </div>
  </div>
</body>
</html>

Erstellen Sie eine Anwendung

upload.py


import os
import sqlite3
from flask import Flask, render_template, request, redirect, url_for, send_from_directory, session
from werkzeug import secure_filename
app = Flask(__name__)

UPLOAD_FOLDER = './uploads'
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'gif'])
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['SECRET_KEY'] = os.urandom(24)

def allowed_file(filename):
    return '.' in filename and \
        filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

@app.route('/')
def index():
    if 'username' in session:
        return render_template('index.html')
    return '''
        <p>Bitte loggen Sie sich ein</p>
    '''

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        if username == 'admin':
            session['username'] = request.form['username']
            return redirect(url_for('index'))
        else:
            return '''<p>Der Benutzername ist unterschiedlich</p>'''
    return '''
        <form action="" method="post">
            <p><input type="text" name="username">
            <p><input type="submit" value="Login">
        </form>
    '''

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

@app.route('/send', methods=['GET', 'POST'])
def send():
    if request.method == 'POST':
        img_file = request.files['img_file']
        if img_file and allowed_file(img_file.filename):
            filename = secure_filename(img_file.filename)
            img_file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            img_url = '/uploads/' + filename
            return render_template('index.html', img_url=img_url)
        else:
            return ''' <p>Nicht erlaubte Verlängerung</p> '''
    else:
        return redirect(url_for('index'))

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

if __name__ == '__main__':
    app.debug = True
    app.run()

Wie beim letzten Mal habe ich versucht, eine Spezifikation zu erstellen, die ohne Anmeldung nicht hochgeladen werden kann. Die Dateien, die hochgeladen werden dürfen

ALLOWED_EXTENSIONS = set(['png', 'jpg', 'gif'])

Auf diese Weise können Sie .txt usw. zulassen. Daher ist es einfach, andere Uploader als Bilder anzupassen. Es ist also ohne einen geheimen Schlüssel nutzlos

app.config['SECRET_KEY'] = os.urandom(24)

Ich generiere es.

Dieses Mal möchte ich nur das Ergebnis des Bild-Uploads sofort sehen.

img_url = '/uploads/' + filename

Ich weiß es nicht, weil es schlampig geschrieben ist.

Ausführungsergebnis

スクリーンショット 2017-05-18 15.23.26.png

erledigt.

Recommended Posts

Bild-Uploader mit Flasche
Memo zum Senden und Empfangen von Bildern mit Python (Flask)
Bildformat in Python
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
Tweet mit Bild in Python
Bildverarbeitungssammlung in Python
Bildzusatznotiz in reportlab
Überprüfen Sie einfach den Inhaltstyp mit Flask (@content_type).
Sellerie asynchrone Verarbeitung in Flask
Hochladen mehrerer Dateien mit Flask
Verwenden Sie <input type = "date"> mit Flask
SLIC Superpixel-Segmentierung im Scikit-Bild
Implementierte Bildsegmentierung in Python (Union-Find)
Django1.11.1 Bild-Uploader Leicht zu stolpernde Punkte
Erkennen Sie Mosaikpunkte im Bild
[Bildverkettung] Ordnen Sie Bilder in Kacheln an
Problem, bei dem Apscheduler zweimal in Flask ausgeführt wurde - gefixt
Flasche
Hallo Welt mit Flasche [Passendes Memo]
Flasche
Best Practices für Konfigurationsdateien in Flask
Bild-Upload-Funktion mit Vue.js + Flask
Zeigen Sie das Bild nach der Datenerweiterung mit PyTorch an
Bilderkennungsmodell mit Deep Learning im Jahr 2016
(Für mich) Setzen Sie den Kolben in den VS-Code ein
Mindestkenntnisse zur Verwendung von Form with Flask
Starten Sie eine Flask-App in Python Anywhere
Gesichtsbildinferenz mit Flask und TensorFlow
So passen Sie den Bildkontrast in Python an
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
Hinweise zur Bewertung der CG-Bildqualität in Python
Erstellen und Bereitstellen von Flask-Apps mit PTVS
Ordnen Sie Controller automatisch URLs mit Flask zu