[PYTHON] Télécharger et télécharger des images avec Falcon

Télécharger et télécharger des images avec Falcon

J'ai dû télécharger le fichier image avec Falcon, mais je vais le télécharger car il n'y avait pas d'article dans Qiita.

Code source de l'API

server.py


import os
import json
import uuid
import falcon
from falcon_multipart.middleware import MultipartMiddleware

IMAGE_DIR = './images'
if not os.path.exists(IMAGE_DIR):
    os.mkdir(IMAGE_DIR)

class PostResource:
    def on_post(self, req, resp):
        image = req.get_param('file')
        raw = image.file.read()
        image_id = str(uuid.uuid4())
        filepath = os.path.join(IMAGE_DIR, f'{image_id}.png')
        with open(filepath, 'wb') as fp:
            fp.write(raw)
        resp.status = falcon.HTTP_200
        resp.content_type = 'application/json'
        resp.body = json.dumps({'image_id': image_id})


class GetResource:
    def on_get(self, req, resp, image_id):
        filepath = os.path.join(IMAGE_DIR, f'{image_id}.png')
        if not os.path.exists(filepath):
            resp.status = falcon.HTTP_404
            return

        resp.downloadable_as = filepath
        resp.content_type = 'image/png'

        resp.stream = open(filepath, 'rb')
        resp.status = falcon.HTTP_200


app = falcon.API(middleware=[MultipartMiddleware()])
app.add_route('/images', PostResource())
app.add_route('/images/{image_id}', GetResource())

if __name__ == "__main__":
    from wsgiref import simple_server
    httpd = simple_server.make_server("0.0.0.0", 8000, app)
    httpd.serve_forever()

méthode de départ

python3 server.py

Comment appeler

Enregistrement d'image

Lorsque vous POSTEZ l'image, l'ID de l'image ("44fea721-ef84-41c1-8845-3f2d5ad8b990" dans l'exemple ci-dessous) sera renvoyé en JSON.

curl -X POST -F [email protected] http://localhost:8000/images
{"image_id": "44fea721-ef84-41c1-8845-3f2d5ad8b990"}

Référence d'image

Obtenez-le en utilisant l'ID d'image renvoyé lorsque vous avez enregistré l'image plus tôt.

curl -X GET -o out.png http://localhost:8000/images/44fea721-ef84-41c1-8845-3f2d5ad8b990

référence

Recommended Posts

Télécharger et télécharger des images avec Falcon
Télécharger automatiquement des images avec grattage
Impossible de télécharger des images avec Google_images_download
Capturer des images avec Pupil, python et OpenCV
Téléchargez facilement des mp3 / mp4 avec python et youtube-dl!
Découpez et connectez des images avec ImageMagick
Télécharger des images sur Google Drive avec Python
Rechercher et télécharger automatiquement des vidéos YouTube avec Python
Impossible de télécharger plusieurs images à partir du formulaire avec FastAPI
Chargez le modèle caffe avec Chainer et classez les images
Télécharger en masse des images à partir d'une URL spécifique avec python
Conversion en ondelettes d'images avec PyWavelets et OpenCV
Application de gestion simple pour les images téléchargées et les images de visage
Télécharger des images sur S3 avec une interface graphique à l'aide de tkinter
Télécharger des fichiers avec Django
Obtenez des images et des vidéos de la chronologie des médias avec Python + Tweepy
Télécharger en masse des images à partir d'une URL de site spécifique avec python
Télécharger des images à l'aide de demandes
Afficher des images intégrées de mp3 et flac avec mutagène
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
Créez un lot d'images et gonflez avec ImageDataGenerator
Téléchargement de fichiers avec django
Avec et sans WSGI
Centrer l'image avec python-pptx
LGTM --Composez des images LGTM avec des vidéos et des photos et produisez une animation GIF
Séparez les images couleur en images RVB et affichez-les avec OpenCV
Téléchargez des images prises avec une caméra d'action avec un script Mapillay
Convertissez des images numérisées déformées en PDF avec Pillow et PyPDF
Avec moi, cp et sous-processus
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Images en bordure avec python Partie 1
Travailler avec le tkinter et la souris
Python et matériel - Utilisation de RS232C avec Python -
Enregistrez des images avec le web scraping
API Web avec Python + Falcon
Extraire et empaqueter des images initrd
Envoi et réception d'images Flask
Super résolution avec SRGAN et ESRGAN
Combinez deux images avec Django
Group_by avec sqlalchemy et sum
python avec pyenv et venv
Téléchargement de fichiers avec Flask + jQuery
Télécharger le fichier csv avec python
Avec moi, NER et Flair
Fonctionne avec Python et R
Téléchargement par lots d'images à partir d'une URL spécifique avec la version modifiée de python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Téléchargez les images et vidéos contenues dans les tweets que vous avez aimés sur Twitter et téléchargez-les sur Google Drive