Asp.net - comment faire un upload de fichier simple (du client vers le serveur)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 49 149 fois - Téléchargée 37 fois

Contenu du snippet

Très souvent dans des projets WEB, une partie avec un upload de fichier devient nécessaire, dans ce petit exemple, vous aurez la base pour gérer un upload de fichier.

L'exemple suivant vous montrera un upload de fichier Image (JPG) avec un renommage de l'image fixe.
Vous pourrez adapter cet exemple très facilement et ajouter de nombreuses options comme la génération de miniature (cf source précédente), ou l'enregistrement en base, ... etc.

L'exemple vous fournit la partie aspx concernant l'Upload (un Input, un label et un bouton), ainsi que le Code Behind gérant l'évènement du click sur le bouton.

Source / Exemple :


' -------------- Dans le fichier Gabarit (ASPX) -----------------------

<INPUT id="BtnChoixFichier" type="file" name="BtnChoixFichier" 
		runat="server" width="100%"><BR>
<asp:Label id="AlertUpload" runat="server" Visible="False" 
		Font-Size="X-Small" BackColor="Transparent" 
		BorderColor="Transparent" 
		ForeColor="SteelBlue" Font-Bold="True"></asp:Label><BR>
<asp:button id="EnvoieFichier" runat="server" CssClass="btnSuivant" 
		Text="Envoi du Fichier" Width="200px"></asp:button><BR>

' -------------- Dans le fichier Code Behind (ASPX.VB) ---------------

Protected WithEvents BtnChoixFichier As System.Web.UI.HtmlControls.HtmlInputFile
....

Private Sub EnvoieFichier_Click(ByVal sender As System.Object, _
		ByVal e As System.EventArgs) Handles EnvoieFichier.Click
 ' Envoie le fichier choisi 
 If (BtnChoixFichier.PostedFile.ContentLength < 1) Then
  AlertUpload.Visible = True
  AlertUpload.Text = "Attention : Il manque le fichier ou celui-ci est vide."
 Else
  If (BtnChoixFichier.PostedFile.ContentLength > 100000) Then
   AlertUpload.Visible = True
   AlertUpload.Text = "Attention : Taille du Fichier trop importante"
  Else
   Dim exc As New Exception()
   dim RepertoirePhoto As String = "C:\\MonRepertoire"
   Dim Nom_Image as String = "MonFichierImage.jpg"

   Try
    BtnChoixFichier.PostedFile.SaveAs(RepertoirePhoto & Nom_Image)
    AlertUpload.Visible = True
    AlertUpload.Text = "Upload du fichier : " & Nom_Image & " - Taille : " & _
    		BtnChoixFichier.PostedFile.ContentLength

   Catch exc
    AlertUpload.Visible = True
    AlertUpload.Text = "Erreur dans l'enregistrement du Fichier : " & Nom_Image
   End Try

  End If
 End If

End Sub
' -----------------------------------------------------

Conclusion :


Bon coding.

Romelard Fabrice (Alias F___)

A voir également

Ajouter un commentaire

Commentaires

cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
Attention, il faut bien rajouter l'attribut enctype="multipart/form-data" à l'élément from qui englobe l'envoi de fichier !!!
cs_fabrice69
Messages postés
1766
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Oui c'est exact, mais c'était déja le cas en ASP 3.
Le Enctype est une propriété de l'objet HTML FORM.

Merci tout de même de la précision.

F___
cs_Esquisse
Messages postés
77
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
20 juillet 2005
-
Salut,

Ton code marche effectivmeent en local mais j'arrive pas a le faire upload soit chez mon hébergeur soit sur mon serveur en local...

je modifie cette variable dans tout les sens mais rien y fait :

Dim RepertoirePhoto As String = "C:\\MonRepertoire"

Mon serveur en local est un répertoire virtuel de IIS 'toto'
Et mon hébergeur a un rep htdocs à la racine.

Comment spécifier que le fichier aille au moins à la racine du site ?
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
Esquisse-> Il est probable que tu n'ais pas les droits d'écriture dans le répertoire en question avec l'utilisateur IUSR_NomDeTaMachine
Sinon tu peux récuprer la racine du site avec System.Wub.HttpRequest.PhysicalApplicationPath (c'est peut être pas la bonne chaine d'objet mais c'est bien méthode à utiliser)
cs_Esquisse
Messages postés
77
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
20 juillet 2005
-
ouep ca marche merci ;)

request.physicalapplicationpath & "\images"

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.