2010-08-10 11 views
2

Je développe un site Web et je voudrais que les utilisateurs puissent télécharger des fichiers sur le serveur en utilisant une page Web.Comment télécharger un fichier sur un site Web en utilisant HTML

Le côté serveur est .NET, mais ce n'est pas ASP.NET. Cela signifie que je génère moi-même le code html à l'aide d'ASP.NET et que je travaille directement avec la chaîne GET et le flux POST. C'est un bon exercice pour apprendre ce qui se passe sous le capot: D, spécialement de nos jours quand il y a un cadre pour tout. J'ai essayé de trouver des informations à ce sujet, mais j'ai trouvé plusieurs approches, certaines d'entre elles javascript (chose que je veux éviter pour le moment) et beaucoup de contrôles prédéfinis. Ce que je veux, c'est le faire moi-même, peu importe s'il y a un contrôle ASP.NET sympa, astucieux et bien éprouvé ... ce que je veux, c'est comprendre comment cela fonctionne avec toutes ses implications.

À la votre!

Répondre

4

Dans le code HTML, vous avez besoin d'un formulaire avec une entrée de type = "file" et l'attribut enctype du formulaire défini sur "multipart/form-data" plutôt que la valeur par défaut "application/x-www- urlencoded ".

Multipart/form-data est défini dans RFC 2388, et se comportera différemment de l'application/x-www-form-urlencoded que vous avez analysé avec cette expérience jusqu'à présent, bien que ce soit assez simple. Le RFC devrait vous donner tout ce que vous devez savoir pour répliquer comment fonctionne la propriété HttpRequest.Files dans ASP.NET.

Une extension de ceci, essayez d'envoyer des flux de XMLHttpRequest dans une page ou HttpWebRequest dans une application client .NET, en utilisant à la fois POST et PUT (vous devrez peut-être modifier les paramètres IIS pour permettre le PUT). de travailler sur cela avec vos expériences ici couvrira certaines connaissances qui ont une réelle applicabilité même lorsque vous utilisez tous les toolkits. Une autre extension consiste à essayer de mettre en œuvre les deux côtés des deux schémas dans RFC2617 sans aucune aide de la part de l'infrastructure (parfois, le côté serveur de cette fonctionnalité est vraiment utile). Bravo pour expérimenter avec cela, il devrait apporter une expérience réelle pour sauvegarder ce que vous pouvez apprendre en lisant RFC 2616 (bien que ce soit toujours absolument vital pour tout le monde de se familiariser intimement avec, comme la lecture couvrira certains cas vos expériences ne touchez pas, et expliquez tout ce qui semble étrange dans vos résultats).

+2

+1 la meilleure réponse jusqu'à présent! –

+1

Merci beaucoup, je vais essayer et voir ce que je peux obtenir :) Cordialement. – vtortola

3

Je pense que le lien suivant doit contenir les informations dont vous avez besoin:

http://www.cs.tut.fi/~jkorpela/forms/file.html

Fondamentalement, vous avez besoin d'un input type = « file » et de définir l'encodage de votre formulaire multipart/form-data .

2
<input type="file" name="somename" size="n"> 

Vous mettez cela sous une forme, et hasta la vista bébé!

1

Vous ne pouvez pas faire un téléchargement de fichier en utilisant du HTML pur: Vous devrez gérer les fichiers téléchargés du côté serveur.

Vous pouvez analyser les fichiers téléchargés à partir des données POST brutes si vous voulez apprendre comment cela fonctionne "sous le capot" (voir here pour un exemple comment le faire en ASP), mais vous besoin d'une sorte de langage côté serveur pour le faire.

+1

Vous avez besoin d'un langage côté serveur, mais pas d'un framework côté serveur si vous construisez ** tout ** le code serveur vous-même, ce que semble faire le demandeur (et même si c'est une forme folle de réinventer le roue pour un projet en direct, c'est un exercice ** très ** éducatif). –

+0

@Jon bon point! En théorie, vous pouvez même créer un petit serveur Web - je pense qu'il existe plusieurs exemples de projets. Mais cela va * profondément * dans le traitement du protocole HTTP et de ses bizarreries. Je ne voudrais pas faire cela en mille ans :) mais c'est certainement d'une grande valeur éducative. –

+3

J'ai moi-même écrit un simple serveur web dans les années 1990. Ce n'était pas efficace ou complet ou en tout cas capable de faire le travail assez bien pour être utilisé pour un projet payant, mais c'était très amusant et cela m'a appris un ** lot ** de la connaissance HTTP profonde que j'ai encore utiliser aujourd'hui. –

Questions connexes