36 votes

Meilleur moyen de télécharger plusieurs fichiers à partir d'un navigateur

Je travaille sur une application web. Il existe un endroit où l'utilisateur peut télécharger des fichiers avec le protocole HTTP. Il y a le choix entre le classique transférer un fichier HTML de contrôle et une applet Java à télécharger les fichiers.

Le classique de transférer un fichier HTML n'est pas parce que vous ne pouvez sélectionner qu'un seul fichier à la fois, et il est assez difficile d'obtenir un progrès quelconque indication lors de l'upload (j'ai finalement obtenu l'aide d'une minuterie de l'actualisation d'un indicateur de progrès avec des données récupérées à partir du serveur via un appel AJAX). L'avantage: c'est toujours du travail.

Avec l'applet Java je peux faire plus de choses: sélectionner plusieurs fichiers à la fois (même dossier), compresser les fichiers, obtenir un réel progrès de la barre, faites glisser-déposer les fichiers sur l'applet, etc...
MAIS il y a quelques inconvénients:

  • c'est un cauchemar pour qu'il fonctionne correctement sur Mac Safari et Firefox sur Mac (Merci Liveconnect)
  • l'INTERFACE utilisateur n'est pas exactement le natif de l'INTERFACE utilisateur et certaines personnes remarquent que
  • l'applet n'est pas aussi réactif qu'il devrait (peut-être ma faute, mais tout semble ok pour moi)
  • il y a des bugs dans le Java UrlConnection classe avec HTTPS, donc j'utilise Apache HTTP communs client pour faire le téléchargement HTTP. Il est assez grand, un package et ralentit le téléchargement de la .fichier jar
  • Apache HTTP communs client a parfois de la difficulté à passer par des proxys
  • l'environnement d'exécution Java est assez grand

J'ai été le maintien de cette applet Java pour un certain temps, mais maintenant j'en ai marre avec tous les inconvénients, et compte tenu de l'écriture/l'achat d'un tout nouveau composant de télécharger ces fichiers.

Question

Si vous aviez les exigences suivantes:

  • télécharger plusieurs fichiers à partir d'un navigateur, via HTTP ou HTTPS
  • compresser les fichiers pour réduire le temps de téléchargement
  • télécharger devrait fonctionner sur n'importe quelle plateforme, avec native INTERFACE utilisateur
  • doit être capable de télécharger de gros fichiers jusqu'à 2 go au moins
  • vous avez carte blanche sur la technologie

Ce que la technologie/compontent utiliseriez-vous?


Edit :

  • Drag'n'Drop de fichiers sur le composant serait un grand plus.
  • Il semble qu'il y a beaucoup de problèmes liés à des bugs avec le Flash Player (swfupload problèmes connus). Bonne prise en charge Mac et télécharger via des proxys avec authentification sont des choix que je ne peut pas faire sans. Ce serait sans doute la règle de tous à base de Flash, options :-( .
  • Je règle tous HTML/Javascript-options uniquement parce que vous ne pouvez pas sélectionner plus d'un fichier à la fois avec le HTML classique de contrôle. C'est une douleur d'cliquez sur n-fois le bouton "parcourir" si vous souhaitez sélectionner plusieurs fichiers dans un dossier.

5voto

Gautam Points 1492

J'ai mis en place quelque chose de très récemment dans Silverlight.

Utilise essentiellement HttpWebRequest pour envoyer un bloc de données à un GenericHandler.

Sur le premier post, 4 KO de données est envoyé. Sur le 2ème morceau, j'envoie un autre 4K morceau.

Lorsque le 2e morceau est reçu, je calcule le trajet aller-retour il a fallu entre la première et la 2ème partie et donc maintenant le 3ème morceau lors de l'envoi saura pour augmenter la vitesse.

En utilisant cette méthode, je peut télécharger des fichiers de TOUTE taille et que je puisse reprendre.

Chaque post, j'ai envoyer le long de cette info:

[PARAMÈTRES] [FILEDATA]

Ici, les paramètres contenir les éléments suivants: [Morceau #] [Nom de fichier] [ID de Session]

Après chaque bloc est reçu, j'ai envoyer une réponse à mon Silverlight dire à quelle vitesse il a fallu que l'on peut maintenant envoyer un plus grand chunk.

Dur de mettre mon explication sans code, mais c'est fondamentalement la façon dont je l'ai fait.

À un certain point, je vais mettre un rapide article sur la façon dont je l'ai fait.

5voto

slf Points 15327

Je n'ai jamais utilisé avec des fichiers de 2 GO en taille, mais la YUI Fichier Uploader assez bien travaillé sur un projet précédent. Vous pourriez également être intéressé par ce Plugin jQuery.

Cela dit, je pense toujours que l'Applet Java est le chemin à parcourir. Je pense que vous vous retrouverez avec moins de portabilité et de l'INTERFACE utilisateur de questions que vous vous attendez et faites-le Glisser/Déposer de grandes œuvres. Pour l'enregistrement, Box.net utilise un Applet Java pour leur multi-fichier rapide uploads.

4voto

Sébastien Nussbaumer Points 1903

OK c'est mon point de vue sur ce

J'ai fait quelques tests avec swfupload, et j'ai ma précédente expérience avec Java, et ma conclusion est que quelle que soit la technologie utilisée il n'y a pas de solution parfaite pour faire des téléchargements sur le navigateur : vous aurez toujours des bugs lors du téléchargement de gros fichiers, en passant par des proxys, ssl, etc...

MAIS :

  • un flash uploader (à la swfupload) est vraiment léger, n'a pas besoin de l'autorisation de l'utilisateur et dispose d'une interface native qui est VRAIMENT cool, je pense
  • java uploader besoin d'une autorisation, mais vous pouvez faire ce que vous voulez avec les fichiers sélectionnés par l'utilisateur (aka compression en cas de besoin), et faites-le glisser-déposer fonctionne bien. Être prêt pour une certaine épique bugs debuggin " si.
  • Je n'ai pas eu un changement de jouer avec Silverlight aussi longtemps que je voudrais peut-être que la vraie réponse, bien que la technologie est encore assez jeune, donc ... je vais éditer ce post si j'ai une chance de jouer un peu avec Silverlight

Merci pour toutes ces réponses !!

3voto

adam Points 10572

Il existe un certain nombre de composants Flash gratuits offrant une possibilité de téléchargement de fichiers multiples. Ils utilisent la classe ActionScripts FileReference avec un récepteur PHP (ou autre) côté serveur. Certains ont récemment rompu avec le lancement de FP10 mais je sais avec certitude que swfupload fonctionnera :)

J'espère que cela t'aides!

2voto

Alos Points 674

Qu'en est-il de ces deux Jupload http://jupload.sourceforge.net/ et jumploader http://jumploader.com/

Les deux sont des applets java, mais ils sont également très faciles à utiliser et à mettre en œuvre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X