Aller au contenu
use-cases / drag-drop-uploads-into-your-script / hero
PIPE · NAVIGATEUR → STDIN

Uploads par glisser-déposer dans votre script, sans écrire de code d'upload

hoody-pipe sert déjà un formulaire d'upload web sur chaque chemin qu'il possède. Glissez un fichier sur la page, les octets traversent le pipe et arrivent dans le stdin de votre script. Vous n'avez écrit aucune ligne de code d'upload.

Lire la documentation pipe

pas de code d'upload, pas de bucket S3, pas d'URL pré-signée

use-cases / drag-drop-uploads-into-your-script / mechanism

Comment un glisser devient un flux

hoody-pipe exécute une UI web à la racine du chemin et un fallback sans JavaScript sur /noscript. Tous les deux diffusent les octets multipart directement vers quiconque lit le même chemin. Votre script lit le pipe — c'est tout le câblage qu'il y a.

navigateur → pipe → stdin4 ÉTAPES · ZÉRO HANDLER
  • 01

    Choisissez un chemin, partagez l'URL

    https://pipe.hoody.com/upload

    Tout chemin que vous n'avez pas réservé devient un pipe. L'URL est la page d'upload.

  • 02

    L'utilisateur dépose un fichier dans le navigateur

    GET /upload — formulaire d'upload servi automatiquement

    Hoody sert le formulaire pour vous : zone de dépôt, parser multipart, nonce CSP, tout est inclus. /noscript existe pour les navigateurs restreints.

  • 03

    Les octets traversent le pipe

    PUT /api/v1/pipe/upload (multipart/form-data)

    La première partie multipart est extraite et diffusée vers le destinataire. Pas de staging côté serveur, pas de fichiers temporaires.

  • 04

    Votre script lit stdin

    curl …/api/v1/pipe/upload | python process.py

    Destinataire et expéditeur se connectent dans un TTL de 5 minutes. Le script ne sait pas qu'il est derrière une page web — il lit simplement les octets.

process.sh
# 1. votre script lit le pipe
$curl https://pipe.hoody.com/api/v1/pipe/upload | python process.py
# 2. quelqu'un ouvre https://pipe.hoody.com/upload dans un navigateur,
# dépose invoice-q3.pdf sur la page,
# le formulaire envoie les octets en PUT vers vous.
# 3. votre script traite stdin et termine
[OK]enregistré dans /data/uploads/invoice-q3.pdf

Le pipe est le serveur d'upload. Votre script est le destinataire. Il n'y a pas de troisième processus — pas de Lambda, pas d'API gateway, pas de fonction de glue — entre la zone de dépôt et votre stdin.

use-cases / drag-drop-uploads-into-your-script / no-code

Ce que vous n'avez pas eu à écrire

Chaque élément ci-dessous représente une journée normale de travail pour construire un uploader ponctuel. Le pipe livre tout cela.

FORMULAIRE WEB

Zone de dépôt, sélecteur de fichier, progression

L'UI du pipe affiche une zone de glisser-déposer, un fallback de sélection au clic et un retour de progression. /noscript sert un formulaire HTML pur pour les navigateurs sans JS — même chemin, pas de code supplémentaire.

TRANSPORT

Parsing et streaming multipart

Quand le navigateur envoie en POST multipart/form-data, le serveur extrait la première partie et la diffuse. Pas de bufferisation du body, pas de nettoyage de fichiers temporaires, pas de bibliothèque multipart de dix lignes.

SÉCURITÉ

Nonce CSP, sécurité MIME, preflight CORS

Le formulaire est livré avec un nouveau nonce CSP. Les types de contenu dangereux (text/html, image/svg+xml, application/javascript) sont réécrits en text/plain avant de vous parvenir. OPTIONS gère le preflight cross-origin.

CONNEXION

Destinataire en premier ou expéditeur en premier, vous choisissez

Lancez votre script avant qu'on n'uploade, ou après — le pipe maintient la connexion jusqu'à un TTL de 5 minutes jusqu'à ce que les deux extrémités soient présentes. Le nombre de destinataires (n) est configurable jusqu'à 256.

use-cases / drag-drop-uploads-into-your-script / compare

Ce que cela remplace

Côte à côte : le pipeline d'upload que vous auriez construit, comparé à l'URL que vous pointez vers votre script.

PréoccupationCe que vous écririezCe que Hoody vous donne
  • Formulaire d'uploadApplication Flask + dropzone.js + CSSGET /upload — déjà un formulaire
  • Parsing multipartMulter / formidable / busboyPremière partie extraite à la volée
  • StockageBucket S3 + endpoint d'URL pré-signéeStreaming direct dans votre script
  • RoutageAPI Gateway + Lambda + IAMChoisissez un chemin, c'est la route
  • Fallback sans JSSecond formulaire, rendu serveur/noscript le sert gratuitement
  • En-têtes de sécuritéCSP, nonce, CORS, garde-fous MIMELivré avec le pipe
use-cases / drag-drop-uploads-into-your-script / punchline

Vous avez écrit le script. Hoody a écrit le formulaire d'upload.

VOUS AVEZ LIVRÉ

process.py — lire stdin, faire le travail

while read chunk; do …
HOODY A LIVRÉ

la page, le formulaire, le parser, la sécurité

GET /upload — servi automatiquement
Lire la documentation pipe
use-cases / drag-drop-uploads-into-your-script / replaces

Ce que cela remplace

Les patterns vers lesquels les développeurs se tournent quand ils ont besoin d'un upload de fichier ponctuel. Chacun impose une taxe de mise en place — buckets à provisionner, middleware à installer, clés de signature à faire tourner. Le pipe est une URL.

  • AWS S3 (URL pré-signée + bucket)Provisionner un bucket, signer des URLs, les expirer
  • Endpoints de routage personnalisésRoute par upload, faite à la main et oubliée
  • Middleware Multer / formidableBibliothèque multipart à installer et entretenir
  • Services dropzone hébergésSaaS tiers, facturation séparée
  • Pipelines d'upload S3 + LambdaDeux services et de la glue IAM pour un seul formulaire
  • Filestack / UploadcareSDK fournisseur, lock-in fournisseur, tarification fournisseur
use-cases / drag-drop-uploads-into-your-script / cta

Choisissez un chemin. Lisez le pipe. Le formulaire d'upload est déjà en ligne à cette URL.

use-cases / drag-drop-uploads-into-your-script / related

Découvrez les autres