🎯 Intention


Pour des besoins métier il est possible de télécharger des fichiers volumineux. Afin de limiter la charge du serveur, la configuration du **DirectUpload** est nécessaire.

Le principe du direct upload est d’envoyer les fichiers vers un service de stockage (Google storage, Amazon S3…) directement depuis le navigateur de l’utilisateur, sans passer par le serveur.

<aside> ✅ Pré-requis

✅ Points clés


<aside> ⌛ Temps indicatif : ~ 2h

</aside>

Etape

Visuel / Exemple


🔗 Configurer le direct_upload

//= require activestorage
# views/admin/orders/_form.html.arb

input :picture,
      as: :file,
      input_html: {
        accept: "image/png, image/jpeg, image/webp",
        "data-direct-upload-url": rails_direct_uploads_url,
      },
      required: true

🔗 Vérifier son implémentation.

Exemple de reponse dans le Network lors d’un upload d’image sur Iris staging. On voit ici que le direct_upload s’execute et nous renvoit une 200.

Exemple de reponse dans le Network lors d’un upload d’image sur Iris staging. On voit ici que le direct_upload s’execute et nous renvoit une 200.

Exemple de logs sur Iris. Dans l’encadré on observe le début de la requête POST vers l'URL "/rails/active_storage/direct_uploads” et nous renvoit un statut 200 OK. Le controller ActiveStorage::DirectUploadsController prend le relais pour interagir avec notre service de stockage en lui envoyant notre blob au format json.

Exemple de logs sur Iris. Dans l’encadré on observe le début de la requête POST vers l'URL "/rails/active_storage/direct_uploads” et nous renvoit un statut 200 OK. Le controller ActiveStorage::DirectUploadsController prend le relais pour interagir avec notre service de stockage en lui envoyant notre blob au format json.


❌ Erreurs type à éviter


🎓Aller plus loin