Je travaille sur une application web. Il existe un endroit où l'utilisateur peut télécharger des fichiers avec le protocole HTTP. Vous avez le choix entre le contrôle de téléchargement de fichier HTML classique et un applet Java pour télécharger les fichiers.
Le téléchargement de fichier HTML classique n’est pas génial, car vous ne pouvez sélectionner qu’un fichier à la fois, et il est assez difficile d’obtenir une indication de la progression pendant le téléchargement (je l’ai finalement obtenu à l’aide d’une minuterie actualisant un indicateur de progression avec les données extraites de la serveur via un appel AJAX). L'avantage: ça marche toujours.
Avec l'applet Java, je peux faire plus de choses: sélectionner plusieurs fichiers à la fois (même un dossier), les compresser, obtenir une vraie barre de progression, glisser-déposer des fichiers sur l'applet, etc.
MAIS il y a quelques inconvénients:
UrlConnection
de Java avec HTTPS; j'utilise donc le client HTTP commun Apache pour effectuer le téléchargement HTTP réel. C'est un paquet assez volumineux qui ralentit le téléchargement du fichier .jar Je maintiens cette applet Java depuis un moment, mais maintenant, j'en ai marre de tous les inconvénients, et j'envisage d'écrire/d'acheter un tout nouveau composant pour télécharger ces fichiers.
Question
Si vous aviez les exigences suivantes:
Quelle technologie/composant utiliseriez-vous?
Modifier :
OK, voici ce que je pense de ceci
J'ai fait quelques tests avec swfupload, et j’ai une expérience antérieure de Java, et ma conclusion est que quelle que soit la technologie utilisée, il n’existe pas de solution parfaite pour les envois sur le navigateur : vous finirez toujours avec des bugs lors du téléchargement de gros fichiers, lors de l'utilisation de proxies, avec SSL, etc ...
MAIS:
Merci pour toutes les réponses !!
J'ai récemment implémenté quelque chose dans Silverlight.
Utilise essentiellement HttpWebRequest pour envoyer un bloc de données à un GenericHandler.
Sur le premier message, 4 Ko de données sont envoyés. Sur le 2ème morceau, j'envoie un autre morceau de 4K.
Lorsque le deuxième bloc est reçu, je calcule l'aller-retour qu'il a fallu entre le premier et le deuxième bloc et ainsi maintenant Le troisième bloc lorsqu'il sera envoyé saura accélérer.
En utilisant cette méthode, je peux télécharger des fichiers de TOUTES tailles et les reprendre.
Chaque message que j'envoie avec cette information:
[PARAMÈTRES] [FILEDATA]
Ici, les paramètres contiennent les éléments suivants: [N ° de morceau] [Nom de fichier] [ID de session]
Une fois que chaque morceau est reçu, j'envoie une réponse à mon Silverlight pour lui dire combien de temps il a fallu pour qu'il puisse maintenant envoyer un plus gros morceau .
Difficile de mettre mon explication sans code mais c'est comme ça que je l'ai fait.
À un moment donné, je rédigerai rapidement un résumé de la façon dont j'ai procédé.
Je ne l'ai jamais utilisé avec des fichiers de 2 Go, mais le YUI File Uploader fonctionnait assez bien sur un projet précédent. Vous pouvez également être intéressé par ce plugin jQuery .
Cela dit, je pense toujours que l’applet Java est la solution. Je pense que vous aurez moins de problèmes de portabilité et d’interface utilisateur que vous ne le souhaiteriez et le glisser/déposer fonctionne très bien. Pour mémoire, Box.net utilise une applet Java pour ses téléchargements rapides multi-fichiers.
Il existe un certain nombre de composants Flash gratuits avec la fonctionnalité de téléchargement de fichiers multiples de Nice. 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!
Et 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.
qu'en est-il google gears ?
Vous pouvez également télécharger plusieurs fichiers avec des formulaires HTTP, comme Dave l'a déjà souligné, mais si vous êtes prêt à utiliser quelque chose de plus que ce que HTTP et Javascript offrent, je considérerais fortement Flash. Il existe même des solutions préexistantes telles que MultiPowUpload et il offre bon nombre des fonctionnalités que vous recherchez. Il est également plus facile d'obtenir des informations de progression à l'aide d'un client Flash que de AJAX appels depuis Javascript, car vous disposez d'un peu plus de flexibilité.
Vous pouvez vérifier le paquet Apache Commons FileUpload. Il vous permet de télécharger plusieurs fichiers, de surveiller la progression du téléchargement, etc. Vous pouvez trouver plus d'informations ici:
http://commons.Apache.org/fileupload/
http://commons.Apache.org/fileupload/using.html
Bonne chance
La manière la plus simple de télécharger des fichiers en Java est la bibliothèque GOJFileUpload.jar
Voici le tutoriel de la bibliothèque gojfileupload:
Ils donnent deux méthode
Ils vous renverront HashMap le nom de tous les fichiers que vous avez téléchargés après avoir été téléchargés dans votre dossier de destination.
Il existe des contrôles de téléchargement HTTP/HTTPS qui permettent le téléchargement de plusieurs fichiers. Here est l'un de Telerik, que j'ai trouvé solide et fiable. La dernière version semble avoir la plupart, voire toutes les exigences de votre fonctionnalité.