Heim  >  Artikel  >  Backend-Entwicklung  >  Implementieren Sie einen einfachen Dienst zum Hochladen und Speichern von Bildern mit Python

Implementieren Sie einen einfachen Dienst zum Hochladen und Speichern von Bildern mit Python

高洛峰
高洛峰Original
2017-03-16 15:51:502637Durchsuche

GitHub-Adresse: https://github.com/honmaple/maple-file

Ein einfacher BildUploadDienst implementiert mit Flask

Ursprüngliche Designabsicht

Für die Speicherung von Bildern gibt es Es gibt viele Möglichkeiten, im Allgemeinen werden Cloud-Dienste wie (Qiniu, Youpai usw.) verwendet, aber inländische Dienste wie Qiniu
Benutzerdefinierte Domainnamen erfordern tatsächlich eine Domainnamenregistrierung (Entschuldigung, das war es (ursprünglich wegen der Schwierigkeiten bei der Registrierung) und es hat mich zehn Dollar verschwendet,

und ich wollte wie Qiniu Bilder direkt vor Ort hochladen können. Ich habe mich umgesehen und konnte keins finden war besser geeignet, also habe ich ein

mit

geschrieben, weil die ursprüngliche Absicht darin bestand, lokale Skripte zu veröffentlichen, daher werde ich keine Front-End-Schnittstelle hinzufügen

wenn ich Zeit habe

  • /api/login

    • POST

      登录
  • /api/logout

    • GET

      注销
  • /api/albums

    • Name des Albums

    • Beschreibung des Albums

    • GET
      Albumliste abrufen

    • POST
      Neues Album erstellen

  • /api/albums/

    pk Album-ID

    • Name Albumname

    • Beschreibung Albumbeschreibung

    • GET
      Albuminformationen abrufen

    • PUT
      Albuminformationen ändern

    • LÖSCHEN
      LÖSCHENAlbum

  • /api/images

    • Bilder Bilderliste hochladen

    • Album-Album-ID (Standardmäßig wird ein neues Standardalbum erstellt)

    • GET
      Bilderliste abrufen

    • POST
      Bilder hochladen

  • /api/images/

    • Name Bildname

    • Beschreibung Bild Beschreibung

    • GET
      Bildinformationen abrufen

    • PUT
      Bildinformationen ändern

    • LÖSCHEN
      Bild löschen

Konfiguration

class Config(object):
    DEBUG = True # 生产环境设置为False
    SECRET_KEY = 'ccc' # import os;os.urandom(24)
    SECRET_KEY_SALT = 'ssss'
    JSON_AS_ASCII = False

    PERMANENT_SESSION_LIFETIME = timedelta(days=3)

    PER_PAGE = 10 # 分页
    ADMIN_URL = '/admin/aaaaa' # 后台地址

    LOGIN_TOKEN_HEADER = 'Api-Key' # 将会影响到后面headers设置
    LOGIN_TOKEN = 'api_key' #url?api_key=21312313

    MIDDLEWARE = ['storage.common.middleware.CommonMiddleware']

    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_DATABASE_URI = 'sqlite:///test.db'
    # SQLALCHEMY_ECHO = DEBUG
    UPLOAD_ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg']) # 允许上传的扩展名
    UPLOAD_FOLDER_ROOT = os.path.dirname(os.path.abspath(file))
    UPLOAD_FOLDER_PATH = 'images' # 相对于当前文件路径的地址
    UPLOAD_FOLDER = os.path.join(UPLOAD_FOLDER_ROOT, UPLOAD_FOLDER_PATH)

Konto erstellen

python manager.py create_user

erstellt gleichzeitig ein Standard-Fotoalbum

python manager.py key

zeigt den Benutzerschlüssel an

Hochladen

Speicherpfad für hochgeladene Bilder

  • Originalbildpfad:

    UPLOAD_FOLDER + 'username' + 'photo' + %Y + %m + (时间戳+随机数).png
  • MiniaturansichtPfad:

    UPLOAD_FOLDER + 'username' + 'thumb' + %Y + %m + (时间戳+随机数).png

Beispiel

Verwenden Sie AnfragenLokales Hochladen

import requests

def images():
    url = 'http://127.0.0.1:8000/api/images'
    files = {'images': open('desktop.png', 'rb')}
    multiple_files = [
        ('images', ('11.png', open('11.png', 'rb'), 'image/png')),
        ('images', ('desktop.png', open('desktop.png', 'rb'), 'image/png'))
    ]
    headers = {
        'Api-Key':
        'InhpeWFuZzA4MDdJBtx4AWlPpI_Oxx1Ki8',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'
    }
    # r = requests.post(url, files=multiple_files, headers=headers)
    r = requests.post(url, files=files, headers=headers)
    print(r.text)

                                                                                                                                

Das obige ist der detaillierte Inhalt vonImplementieren Sie einen einfachen Dienst zum Hochladen und Speichern von Bildern mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn