2010-07-07 3 views
0

Je dois implémenter une fonctionnalité permettant à un utilisateur de coller un ou plusieurs liens YouTube, un script PHP les télécharge ensuite sur le serveur, affiche la barre de progression pour chaque téléchargement, puis insère informations pertinentes à leur sujet à la base de données.Télécharger plusieurs fichiers depuis un emplacement distant avec une barre de progression

Comment est-ce que je devrais mettre en application ceci ... Est-ce réalisable avec juste file_get_contents()? Ou peut-être que je devrais utiliser cURL? Et comment pourrais-je implémenter la barre de progression pour chaque processus de téléchargement? Je pensais que vous pourriez le faire avec jQuery en quelque sorte.

Aide appréciée. Merci.

éditer: Juste pour clarifier: Je n'ai pas besoin de savoir comment télécharger une vidéo depuis YouTube, comment télécharger plusieurs fichiers et comment afficher une barre de progression pour chaque téléchargement.

edit2: Pour élaborer: Le site est un site d'archives pour un artiste. Si un fichier vidéo, tel qu'une interview ou une performance en direct n'existe pas déjà sur le site, mais existe sur YouTube, l'utilisateur peut simplement coller un lien vers ce fichier vidéo, le serveur télécharge alors ce fichier sur le serveur et à partir de ce pointer sur il est archivé et hébergé sur le serveur, puis les gens peuvent regarder les vidéos sur le site. J'ai juste besoin de savoir comment télécharger plusieurs fichiers simultanément et afficher une barre de progression pour chaque téléchargement afin que les utilisateurs puissent voir quand ils sont prêts à être visionnés.

+0

Cela ne devrait-il pas être sur stackoverflow? – TheLQ

Répondre

0

Vous devrez le faire avec cURL, car un appel AJAX ne fonctionnerait pas entre les domaines.

Je publierais les informations dans un fichier de script via AJAX, cURL le fichier et les numéros d'écho pour représenter la progression jusqu'à ce qu'il soit terminé. Cela nécessiterait plusieurs appels AJAX pour obtenir un vrai indicateur de progression, mais il serait probablement plus facile d'utiliser un spinner statique et de l'appeler un jour.

Vous pouvez envoyer un autre appel AJAX lorsque le fichier est téléchargé dans le même fichier PHP pour modifier également votre base de données.

+0

Les propriétés responseText et responseXML d'une requête XMLHttpRequest ne sont pas disponibles tant que le chargement de la demande n'est pas terminé. La [spécification W3] (http://www.w3.org/TR/XMLHttpRequest/#switch-done) dicte que le responseText doit contenir les fragments des données chargées "jusqu'à présent", mais pour autant que je sache, mes tests ne sont modifiés que lorsque la requête est terminée (readyState = 4). Cela peut signifier qu'une barre de progression avec un script est impossible. –

+0

Si la fonction php renvoie l'état du téléchargement, vous pouvez appeler le script, lui demander de renvoyer l'état actuel du téléchargement, définir une minuterie et effectuer une autre requête à laquelle une valeur différente sera renvoyée. Je pense que ça pourrait marcher. – Nic

Questions connexes