Quelle est la meilleure façon de télécharger un fichier via un HTTP POST avec un formulaire Web ?

StackOverflow https://stackoverflow.com/questions/11974

Question

En gros, quelque chose de mieux que ça :

<input type="file" name="myfile" size="50">

Tout d'abord, le browse Le bouton est différent sur chaque navigateur.Contrairement au submit bouton sur un formulaire, vous devez en trouver hack-y façon de le styliser.

Deuxièmement, aucun indicateur de progression ne vous indique la quantité de fichier téléchargée.Vous devez généralement implémenter une sorte de moyen côté client pour désactiver plusieurs soumissions (par ex.remplacez le bouton de soumission par un bouton désactivé affichant "Soumission du formulaire...veuillez patienter.") ou afficher un avertissement géant.

Existe-t-il de bonnes solutions qui n'utilisent pas Flash ou Java ?

Yaacov:Ce produit semble être exactement ce que je recherche, mais le coût est de 1 000 $ et il est spécifiquement destiné à ASP.NET. Existe-t-il des projets open source qui couvrent des fonctionnalités identiques ou similaires ?

Était-ce utile?

La solution

Les boîtes de téléchargement de fichiers sont là où nous en sommes actuellement si vous ne souhaitez pas impliquer d'autres technologies comme Flash, Java ou ActiveX.

Avec du HTML simple, vous êtes quasiment limité à l'expérience que vous avez décrite (pas de barre de progression, double soumission, etc.).Si vous souhaitez utiliser du javascript, vous pouvez résoudre certains problèmes en indiquant que le téléchargement est en cours et même montrant la progression du téléchargement (c'est un hack car vous ne devriez pas avoir à faire un aller-retour complet vers le serveur et retour, mais au moins ça marche).

Si vous souhaitez utiliser Flash (qui est disponible presque partout et sur de nombreuses plates-formes), vous pouvez surmonter à peu près tous ces problèmes.Une recherche rapide sur Google est arrivée deux tel composants, tous deux gratuits et Open source.Je n'en ai jamais utilisé, mais ils ont l'air bien.BTW, Flash n'est pas non plus sans problèmes, par exemple lors de l'utilisation du téléchargeur multi-fichiers pour le partage de diapositives, le navigateur plantait constamment sur moi :-(

La meilleure solution actuellement est probablement de détecter dynamiquement si l'utilisateur possède Flash, et si c'est le cas, de lui donner la version flash de l'uploader, tout en permettant de choisir la version HTML de base.

HTH

Autres conseils

Vous pourriez jeter un oeil à Téléchargement fantaisie scénario.Même s'il utilise le flash, il reste superbe.

Le problème ici est que les navigateurs fonctionnent spécifiquement pour bloquer tout ce qui modifie le contrôle d’entrée de base du téléchargement de fichiers.Vous ne pouvez pas le modifier avec javascript par exemple.

La raison est la sécurité - si je pouvais le créer, je pourrais créer une page qui, lorsque vous la visitez, m'enverrait divers fichiers de votre disque dur.Pas gentil.

Il existe actuellement différentes solutions de contournement, mais elles sont différentes entre IE et FX (je ne connais pas Safari, Opera, etc.).

Regardez quoi http://www.gmail.com fait dans IE et FX lorsque vous joignez quelque chose à un e-mail.

Je veux voir ce bouton "Parcourir" inutile - il me dit que je ne laisse rien entrer d'inattendu.

C’est vrai, le contrôle du téléchargement de fichiers est définitivement en retard.Espérons que cela sera résolu dans une future version d'asp.net.

Même si cela coûte un peu d'argent, j'ai trouvé le Contrôle de téléchargement Telerik pour disposer de toutes les fonctionnalités que vous recherchez, y compris les mises à jour de style et de progression (il optimise également la mémoire pour les téléchargements volumineux).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top