Maison >développement back-end >Tutoriel Python >Implémenter un service simple de téléchargement et de stockage d'images à l'aide de Python

Implémenter un service simple de téléchargement et de stockage d'images à l'aide de Python

高洛峰
高洛峰original
2017-03-16 15:51:502732parcourir

GitAdresse du Hub : https://github.com/honmaple/maple-file

Un simple service de imagetéléchargementimplémenté à l'aide de flask

Intention de conception originale

Pour le stockage des images, il y a sont Il existe de nombreux choix, utilisant généralement des services cloud tels que (Qiniu, Youpai, etc.), mais les services nationaux tels que Qiniu
les noms de domaine personnalisés nécessitent en fait un enregistrement de nom de domaine (Excusez-moi, c'était à l'origine à cause des problèmes d'enregistrement) Choisir des photos étrangères), et cela m'a fait perdre dix dollars,

et je voulais pouvoir télécharger des photos directement localement comme Qiniu, j'ai regardé autour de moi et je n'en ai pas trouvé. était plus approprié, j'ai donc dépensé deux dollars. J'ai écrit un

en utilisant

parce que l'intention initiale était de le publier en tant que script local, donc il n'y a pas d'interface frontale. ajoutez

quand j'ai le temps API

  • /api/login

    • .
    • POST

      登录
  • /api/logout

    • GET

      注销
  • /api/albums

    • nom nom de l'album

    • description description de l'album

    • OBTENIR
      Obtenir la liste des albums

    • POST
      Créer un nouvel album

  • /api/albums/

    pk ID de l'album

    • nom Nom de l'album

    • description description de l'album

    • OBTENIR
      Obtenir des informations sur l'album

    • PUT
      Modifier les informations de l'album

    • DELETE
      DELETEAlbum

  • /api/images

    • images Télécharger la liste d'images

    • album album ID (un nouvel album par défaut sera créé par défaut)

    • OBTENIR
      Obtenir la liste des photos

    • POST
      Télécharger des images

  • /api/images/

    • nom nom de l'image

    • description image Description

    • OBTENIR
      Obtenir des informations sur l'image

    • PUT
      Modifier les informations de l'image

    • DELETE
      Supprimer l'image

Configuration

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)

Créer un compte

python manager.py create_user

créera un en même temps par défaut l'album photo de

python manager.py key

affiche la clé utilisateur

télécharger

Chemin d'enregistrement de l'image téléchargée

  • Chemin de l'image originale :

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

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

exemple

Utiliser les demandesTéléchargement local

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)

                                                                                                                                             

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn