Comment est-il possible de télécharger plusieurs fichiers dans une demande HTTP? Ce que je veux dire, c'est comme lorsque vous avez plusieurs pièces jointes et que vous sélectionnez ce que vous souhaitez télécharger, puis appuyez sur Télécharger afin qu'ils seront téléchargés de manière automatique et vous n'avez pas à cliquer sur chacun manuellement. P>
J'utilise php comme srcipting serveride. P>
8 Réponses :
Je pense que ce n'est pas possible car chaque demande HTTP n'a qu'un seul URI. P>
Correct. Les demandes HTTP ont un début et une fin spécifiques. Vous pouvez probablement abuser du protocole en écrivant un client spécial et en servant les fichiers comme un fichier (beaucoup comme un fichier goudron code> ou juste un mime multipart code>), mais nous ne voulions pas Je parle d'une solution HTTP pure qui fonctionne plus dans tous les navigateurs.
C'est
Il est i> pratiquement possible (Firefox le prouve). Mais il n'est pratiquement pas utile car ce n'est que Firefox qui le soutient.
Plus de clarification :) BTW, car les développeurs de navigateurs se penchent contre plus de choses publiques telles que les éléments HTML5 et CSS3, je doute que nous verrions une adoption généralisée de ce temps à tout moment. C'est bien de voir que FF l'a impliqué cependant.
Vous pouvez sélectionner le fichier avec PHP, ServerSide et demander le fichier ou le renvoyer dans votre script en définissant les en-têtes appropriés, voir zipararchive code> classe p>
ou vous créez un client spécial capable d'analyser votre format de message auto-spécifié (une application flash, d'un plug-in) - mais si votre client est simplement votre navigateur, vous obtiendrez une réponse avec une longueur de contenu fixe de la serveur. p>
It est em> possible d'envoyer un réponse multipart dans http : p>
En général, HTTP traite un message multipartite non différemment de tout autre type de support: strictement comme charge utile. [...] Un agent utilisateur HTTP devrait suivre le même comportement ou un comportement similaire qu'un agent utilisateur MIME serait à la réception d'un type multipart. P>
[...] Si une application reçoit un sous-type multipartit non reconnu, l'application doit le traiter comme équivalente à "multipart / mixte". P>
blockQuote>
Mais puisque Firefox est le seul navigateur que je connais pour supporter de telles réponses multipartières (à part multipart / byterange em>), vous devez utiliser un format de fichier d'archive à cet effet. P>
Dunno sur une requête HTTP, mais si vous le souhaitez tous à la fois, vous pouvez les boucler lors de la modification de l'en-tête ('' Emplacement: ') CODE> pour chacun d'entre eux lors de la redirection du script de téléchargement immédiat . Cependant, ce serait redondant et moche; Je pense que le meilleur moyen serait de les adapter à tous, il y a des instructions sur la manière de le faire dans le Documentation PHP . < / p>
Ce n'est pas possible de cette façon, car si vous envoyez l'emplacement, le téléchargement de l'en-tête de localisation ne sera pas démarru et que le navigateur sera redirigé, sinon si le fichier sera téléchargé, aucune redirection ne sera effectuée.
Peut-être que vous pouvez utiliser JS pour ouvrir plusieurs popups chacun chargement d'une URL de téléchargement. J'espère que c'est le seul moyen .. p>
J'utilise plusieurs iframes invisibles pour déclencher plusieurs téléchargements à la fois. Il y aura plus d'une demande HTTP, mais l'effet sera ce que vous avez décrit.
<iframe style="display: none;" src="file1.zip"></iframe> <iframe style="display: none;" src="file2.zip"></iframe> <iframe style="display: none;" src="file3.zip"></iframe>
Un moyen facile est de coder les fichiers de base64 et d'envoyer un JSON. Cependant, cela ferait la réponse quelque chose comme 4/3 la taille, alors n'utilisez donc pas cela sur des fichiers volumineux. P>