begin process at 2010 03 17 02:36:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers/Disque

 > ASP.NET - COMMENT FAIRE UN UPLOAD DE FICHIER SIMPLE (DU CLIENT VERS LE SERVEUR)

ASP.NET - COMMENT FAIRE UN UPLOAD DE FICHIER SIMPLE (DU CLIENT VERS LE SERVEUR)


 Information sur la source

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers/Disque Source .NET ( DotNet ) Niveau :Débutant Date de création :09/09/2003 Date de mise à jour :08/01/2004 14:35:32 Vu :37 545

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note


 Description

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

  • ' -------------- 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
  • ' -----------------------------------------------------
' -------------- 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___)


 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source .NET (Dotnet) IMPORTER UN FICHIER EXCEL DEPUIS UN POSTE ET L'AJOUTER SUR L... par jseblavoie
SERVER.MAPPATH QUI ACCEPTE LES ../ par divlys
UPLOAD D'IMAGES VIA ADODB.STREAM ET SQL SERVER par Nicolas_kojack
LISTING DE FICHIERS ET RÉPERTOIRES (FONCTION RÉCURSIVE) par Warwick
Source avec Zip UTILITAIRE POUR FORCER LE TÉLÉCHARGEMENT D'UN FICHIER SUR UN... par shaiulud

Commentaires et avis

Commentaire de Warny le 01/10/2003 11:01:44

Attention, il faut bien rajouter l'attribut enctype="multipart/form-data" à l'élément from qui englobe l'envoi de fichier !!!

Commentaire de fabrice69 le 02/10/2003 11:42:45 administrateur CS

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___

Commentaire de Esquisse le 19/03/2004 14:48:32

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 ?

Commentaire de Warny le 19/03/2004 15:02:32

Esquisse-&gt; 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)

Commentaire de Esquisse le 19/03/2004 15:05:17

ouep ca marche merci ;)

request.physicalapplicationpath & "\images\"

Commentaire de nitrique le 01/03/2005 15:35:46

Comment peux tu etre sur que le document est une image, tu compares les extensions ?

Commentaire de Warny le 01/03/2005 15:41:39

Il faut tester le type mime renvoyé
image/* est une image

Commentaire de flo_yopyop le 19/05/2005 14:20:52

jai un petit probleme :
je ne trouve pas la méthode pour entrer une url par défaut dans le champs texte du input.
la seule que je trouve plosible est en ReadOnly !!!???

Commentaire de Esquisse le 19/05/2005 14:26:19

Si tu veux mettre dans le textebox par défaut style 'c:\image1.jpg' ce n'est pas possible en HTML. Essaie p-e en Javascript mais c'est pas garantit.

Commentaire de flo_yopyop le 19/05/2005 14:35:11

je vois vraiement po comment faire en javascript et g regardé un peu partout sur le net pour l'asp.net g rien trouvé
je vais laisser tomber
merci qd meme ^^

Commentaire de keops31 le 20/07/2005 10:19:50

Salut,
OK pour l'upload en local mais impossible sur une machine distante...
Ex : txtFichier.PostedFile.SaveAs(chemin)avec :
chemin ="\\nomMachine\\dossierPartageTotalPourTLM\\fic.jpg"
ou même
chemin="Y:\\fic.jpg" (Y:lecteur réseau pointant vers cette ressource).
Message d'erreur :
"The referenced account is currently locked out and may not be logged on to."

A l'aide SVP ! Merci d'avance

Commentaire de Esquisse le 20/07/2005 11:09:29

Vu le message je pense que tu as un problèmes de droits.

Tu doit utiliser pour ton site je pense une authentification : vérifie que l'user en question est bien les droits sur le répertoire ou tu veux envoyer l'image. (sinon configure l'user qui est utilisé pour par courri le site dans IIS).

Note : Evidement, il faut que tes users aient les droits en écriture sur le dossier de destination.

Commentaire de fabrice69 le 20/07/2005 11:24:13 administrateur CS

Bonjour,
Les remontées de fichiers ne peuvent se faire sur des Lecteurs "Mapés" (montage dun partage réseau).
En effet, ces "mapages" sont liés à la session utilisateur en cours d'utilisation et le compte faisant fonctionner ASP.NET n'a sans doute pas ces mapages sur la machine.
Il faut donc passer par les URI (\\SERVER\PARTAGE....).
Ensuite sur ce partage, il faut évidement que le compte ASPNET ait les accès en écriture, sinon passer par de l'impersonnation.
Fabrice.

Commentaire de keops31 le 20/07/2005 13:25:30

Sympas pour les réponses.
Mais le répertoire dans lequel j'upload est en contrôle totale pour tout le monde...
Sinon, comment fonctionne l'impersonnalisation ? C'est peut-être La solution.

Merci

Commentaire de Warny le 21/07/2005 09:38:48

essaye ça :
chemin ="\\\\nomMachine\\dossierPartageTotalPourTLM\\fic.jpg"

Commentaire de keops31 le 21/07/2005 13:21:17

Malheureusement, toujours le même message:
"The referenced account is currently locked out and may not be logged on to."

Ce n'est pas un problème de droit puisque quand j'enlève les 'full rights' sur le répertoire distant, un autre message d'erreur s'affiche.

Commentaire de fabrice69 le 21/07/2005 14:20:12 administrateur CS

Il faut voir à te connecter sur le partage avec un compte.
En effet, il est possible que le Framework utilise le compte par défaut de la machine (ASPNET) qui n'est donc pas connu sur le domaine.

Il faut voir du coté (comme je l'ai déja dit) des credentials (pour l'impersonation), afin de spécifier quel compte est utilisé pour accéder à ce répertoire.

Romelard Fabrice

Commentaire de zidane98 le 26/07/2005 13:02:07

Je vois que tu t'y connais alors j'ai une question...

Comment trouver l'URL ou l'HTML d'un mp3 par exemple ?

Merci de me répondre... ;-)

Commentaire de fabrice69 le 26/07/2005 13:13:16 administrateur CS

Question ne voulant rien dire.
Désolé mais le MP3 est un format de fichier musical. Donc une url ou un HTML d'un fichier Musical, je ne vois pas de quoi de quoi tu parles.
Romelard Fabrice

Commentaire de zidane98 le 26/07/2005 13:16:04

Voilà sur un site j'ai trouver ça:

Pour mettre une musique sur votre blog passer en mode html ou si vous y êtes deja inserer le code suivant:


<P align=center><EMBED src=*width=100 height=45 type=audio/mpeg autostart="true" repeat="true" loop="true"></P>



remplacer la*par l'URL de votre musique (mp3/mid)que vous avez mis/uploader dans vos fichiers puis faites un espace entre le debut de l'URL (http://...) puis placez vous sur la fin de l'URL (.mp3/.mid) puis faites de nouveau un espace.

Commentaire de nitrique le 26/07/2005 15:35:26

Hé zidane,
t'as eu tord de quitter le ballon car l'informatique (et l'orthographe) ça n'a pas l'air d'être ton truc...
De plus, tu t'es un peu planté de sujet.

Le script que tu viens de donner ne sert qu'à associer de la musique à une page Web
l'adresse du fichier musical, on ne peut la deviner, c'est selon ou tu la dépose sur ton hébergeur.

Commentaire de keops31 le 22/08/2005 16:56:01

J'ai essayé l'impersonation comme décrit sur plusieurs sites, mais toujours le même message d'erreur  : "Le cast spécifié n'est pas valide." Ce problème de cast se situe après le "CType" du code ci-dessous :

Si quelqu'un peut m'aider à résoudre ce problème, çà serait sympa. Merci.

Dim impersonationContext As System.Security.Principal.WindowsImpersonationContext
Dim currentWindowsIdentity As System.Security.Principal.WindowsIdentity

currentWindowsIdentity = CType(User.Identity, System.Security.Principal.WindowsIdentity)
impersonationContext = currentWindowsIdentity.Impersonate()

'On sauvegarde le fichier dans le bon répertoire
txtFichier.PostedFile.SaveAs(chemin)

impersonationContext.Undo()

Commentaire de hotlines le 27/12/2005 05:26:31

Bonjour , bon voila : je vous donne une exemple complet pour  Uploader des fichers sans connaitre le chemain physique du répertoir ou tu va uploadé sur ton hébergeur :
créer un fichier qui s'appel par exemple upload.aspx et copier ce code :



<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<html>
<head>

    <script runat="server">
        
      Sub UploadButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            
        ' Before attempting to save the file, verify
        ' that the FileUpload control contains a file.
        If (FileUpload1.HasFile) Then
          ' Call a helper method routine to save the file.
          SaveFile(FileUpload1.PostedFile)
        Else
          ' Notify the user that a file was not uploaded.
          UploadStatusLabel.Text = "Désoler ,veuillez sépécifier un fichier à Uploadé"
        End If

      End Sub
        
      Sub SaveFile(ByVal file As HttpPostedFile)
            
        ' Specify the path to save the uploaded file to.
            'Dim savePath As String = "/down"
Dim savePath As String = request.physicalapplicationpath & "\down\"

            
        ' Get the name of the file to upload.
        Dim fileName As String = FileUpload1.FileName
            
        ' Create the path and file name to check for duplicates.
        Dim pathToCheck As String = savePath + fileName
        
        ' Create a temporary file name to use for checking duplicates.
        Dim tempfileName As String
            
        ' Check to see if a file already exists with the
        ' same name as the file to upload.        
        If (System.IO.File.Exists(pathToCheck)) Then
          Dim counter As Integer = 2
          While (System.IO.File.Exists(pathToCheck))
            ' If a file with this name already exists,
            ' prefix the filename with a number.
            tempfileName = counter.ToString() + fileName
            pathToCheck = savePath + tempfileName
            counter = counter + 1
          End While
          
          fileName = tempfileName
          
          ' Notify the user that the file name was changed.
          UploadStatusLabel.Text = "A file with the same name already exists." + "<br>" + _
                                   "Your file was saved as " + fileName
          
        Else
          
          ' Notify the user that the file was saved successfully.
          UploadStatusLabel.Text = "Your file was uploaded successfully."
          
        End If

        ' Append the name of the file to upload to the path.
        savePath += fileName
            
        ' Call the SaveAs method to save the uploaded
        ' file to the specified directory.
        FileUpload1.SaveAs(savePath)
            
      End Sub
        
  </script>

</head>
<body>

    <h3>FileUpload.SaveAs Method Example</h3>

    <form ID="Form1" runat="server">
  
        <h4>Select a file to upload:</h4>
      
        <asp:FileUpload id="FileUpload1"                
            runat="server">
        </asp:FileUpload>
            
        <br><br>
      
        <asp:Button id="UploadButton"
            Text="Upload file"
            OnClick="UploadButton_Click"
            runat="server">
        </asp:Button>   
        
        <hr />
      
        <asp:Label id="UploadStatusLabel"
            runat="server">
        </asp:Label>  
        
    </form>

</body>
</html>

'j'espere que ca va te résoudre le probleme

Commentaire de nino97490 le 07/07/2006 13:17:29

Bonjour,
je viens de tester le code ci-dessus mais j'ai ce msg d'erreur :
-----------------------------------------------------------------
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not load type System.Web.UI.WebControls.FileUpload from assembly System.Web, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

Source Error:


Line 80:         <h4>Select a file to upload:</h4>
Line 81:        
Line 82:         <asp:FileUpload id="FileUpload1"                
Line 83:             runat="server">
Line 84:         </asp:FileUpload>


Source File: c:\inetpub\wwwroot\test.Aspx    Line: 82


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573

------------------------------------------------------------------
D'avance merci

Commentaire de fabrice69 le 07/07/2006 14:54:55 administrateur CS

Il ne faut pas oublier de mettre le form et disant qu'il est de type fichier :

<form id="Form1" method="post" encType="multipart/form-data" runat="server">
....
</form>

Fabrice

Commentaire de bsmoumene le 10/07/2006 17:13:06

Bonjour !
comment uploader un repertoir contenant un lot de fichiers !

Merci

Commentaire de Pedrosa le 14/11/2006 12:52:13

Hello,
Tu n'as que zipper le dossier en question.
Et, après utiliser le code ci-dessus.
Bon prog.

Commentaire de JPP80FR le 20/04/2007 19:18:33

vous n'aurait pas les source????

Commentaire de nyco222 le 17/04/2008 16:49:33

Bonjour à tous,

voila cela fait pas mal d'heures que je suis des tutoriaux pour uploader un fichier sur un serveur et l'envoyer sur un email ... tous les tutoriaux semble fonctionner mais dans mon cas rien ne marche et la j suis au bout de la rupture.
on te dis du genre ouais alors copie colle ca, crée un fichier x.vb, met des dll dans bin, configure web.config et ca marche et tout et tout.
Résultat je vois plus de bla bla que de choses concrètes. Qu'y a-t-il avec ces codes sources ? les gens semblent les garder secret c'est parceque c'est microsoft ??

La j'avoue être perdu, j'aimerai bien faire 2 ou 3 trucs en aspx mais trop de contraintes m'en empêche ... issu du monde libre et de Apache et PHP, je dois dire que j'ai de la peine.

Quelqu'un qui connaitrait une solution complète pour remédier à ce problème d'attachement email pourrait-il donner des explications de type How to ??

Merci en tout cas pour votre dévouement, on voit qu'il y a une réèlle contribution et que finalemetn ca a l'air de marcher ;)

Nyco

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales