Support HTTP Range manquant, impossible de reprendre le téléchargement de fichiers

Discourse ne prend pas en charge l’en-tête HTTP Range et répond toujours avec le code 200 OK au lieu de 206 Partial Content pour les téléchargements de fichiers. Ceci est gênant pour les utilisateurs du forum car cela force à retélécharger le fichier entier en cas de connexion Internet instable.

Le sujet Backup too big, is there a way to download it through "resume download" a mentionné ce problème dans le cas du téléchargement de sauvegardes, cependant cela s’applique également au téléchargement de fichiers réguliers lorsque le stockage S3 n’est pas utilisé.

J’ai vérifié la configuration du proxy nginx, et ce n’est pas un problème de configuration. L’en-tête Range est correctement transmis à localhost:3000 pour les requêtes /uploads/short-url/, mais Discourse ne le gère pas.

Comme HTTP Range est l’une des fonctionnalités HTTP de base, je le classe dans la catégorie “bug” et non “feature”.

P.S. ce n’est pas reproductible ici, sur meta.discourse.org, car il utilise S3 pour le stockage.

2 « J'aime »

Ceci est géré ici :

L’ajout de la prise en charge des plages est tout à fait possible, mais impliquerait l’utilisation de send_data, et la lecture du fichier depuis le disque et l’envoi de la plage :

Un peu trop désordonné pour être honnête.

1 « J'aime »