Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Upload de fichier [ Divers / Autre ] (Gwaedion)

jeudi 29 mai 2008 à 16:28:21 | Upload de fichier

Gwaedion

Bonjour,

J'ai trouvé plusieurs tuto qui permettaient de faire un upload vers un serveur mais je n'arrive pas à le faire fonctionner.

voici l'érreur générée : "Object reference not set to an instance of a object."

Voici mon code :

PAGE: ASCX
[CODE]
 <input id="BtnChoixFichier" runat="server"
        type="file"
        name="BtnChoixFichier"/><br/>
 <asp:Button id="EnvoieFichier" runat="server"
             Text="Envoi du Fichier"
             OnClick="EnvoieFichier_Click"/><br/>
 <asp:Label id="AlertUpload" runat="server"/><br/>
[/CODE]

PAGE: CS
[CODE]
public void EnvoieFichier_Click(object sender, System.EventArgs e)
     {
         // Envoie le fichier choisi
         if ((BtnChoixFichier.PostedFile.ContentLength < 1))
         {
             AlertUpload.Text = "Attention : Il manque le fichier ou celui-ci est vide.";
         }
         else {
             if ((BtnChoixFichier.PostedFile.ContentLength > 100000)) {
                 AlertUpload.Text = "Attention : Taille du Fichier trop importante";
             }
             else {
                 string sRepertoireFichierServeur = "C:\\NewFolder";
                 string sNomFichierUpload = BtnChoixFichier.PostedFile.FileName.Substring(BtnChoixFichier.PostedFile.FileName.LastIndexOf(@"\") + 1);
                 try {
                     BtnChoixFichier.PostedFile.SaveAs(sRepertoireFichierServeur + sNomFichierUpload);
                     AlertUpload.Text = "Upload du fichier : " + sNomFichierUpload + " - Taille : " + BtnChoixFichier.PostedFile.ContentLength;
                 }
                 catch {
                     AlertUpload.Text = "Erreur dans l'enregistrement du Fichier : " + sNomFichierUpload;
                 }
             }
         }
     }
[/CODE]

En faite, BtnChoixFichier.PostedFile est null et je ne sais pas pourquoi...

Merci de me venir en aide

vendredi 30 mai 2008 à 11:06:11 | Re : Upload de fichier

Gwaedion

J'ai trouvé un autre exemple similaire mais qui utilise un FileUpload. Et cette fois-ci l'erreur est qu'il ne trouve pas le fichier que je veux uploader...

Quand je test : if (FileUpload1.HasFile) il me sort que HasFile renvoie null...

 Alors que j'ai bien appuyé sur parcourir et selectionné un fichier... j'ai testé une image et un fichier texte rien n'y fait.

Pourtant il m'affiche bien le chemin complet dans la textbox du FileUpload.

Je ne comprend pas ; le FileUpload est un outils déjà tout fait... il n'y a rien à faire normalement... enfin presque !

Peut-être ai-je oublié quelque chose mais je ne vois pas quoi !

J'ai regardé sur le msdn, il y a juste écrit :

 "Avant d'appeler la méthode SaveAs pour enregistrer le fichier sur le serveur, utilisez la propriété HasFile pour vérifier que le contrôle FileUpload contient un fichier. Si HasFile retourne true, appelez la méthode SaveAs. SI elle retourne false, affichez un message à l'utilisateur indiquant que le contrôle ne contient pas de fichier."

==> donc en gros quand on ajoute un fichier, le HasFile revoie true... eh bah non !

voici mon code :

PAGE: ASCX

<asp:FileUpload ID="FileUpload1" runat="server"/><br />
<br />
<asp:Button ID="Button1" runat="server" Text="Upload File" OnClick="Button1_Click" />&nbsp;<br />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>

PAGE: CS

protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
            try
            {
                FileUpload1.SaveAs("C:\\...\\...\\...\\Folder\\" +
                     FileUpload1.FileName);
                Label1.Text = "File name: " +
                     FileUpload1.PostedFile.FileName + "<br>" +
                     FileUpload1.PostedFile.ContentLength + " kb<br>" +
                     "Content type: " +
                     FileUpload1.PostedFile.ContentType;
            }
            catch (Exception ex)
            {
                Label1.Text = "ERROR: " + ex.Message.ToString();
            }
        else
        {
            Label1.Text = "You have not specified a file.";
        }
    }

Si une âme charitable passe par là...

vendredi 30 mai 2008 à 11:44:22 | Re : Upload de fichier

Gwaedion

Réponse acceptée !
Bon, je continu mon monologue ; ça me sert de térapie...

Je viens de tester mon code dans un nouveau projet et... ça marche !

Mon upload se trouve dans un onglet, lui même situé dans un UC, et l'UC dans une web form !

il me reste plus qu'à essayé de bloquer l'update.

Merci de m'avoir permis de parler de mes problèmes...

samedi 31 mai 2008 à 18:09:57 | Re : Upload de fichier

coq

Administrateur CodeS-SourceS
Salut,

Heu, de rien ;-)

Sinon quelques remarques :

1) FileUpload1.SaveAs("C:\\...\\...\\...\\Folder\\" + FileUpload1.FileName);
=> pas de chemins en dur dans le code => fichier de config etc
=> si tu y tiens vraiment, préfixe la chaine de @, ça évite de doubler les caractères d'échappement : "C:\\...\\...\\...\\Folder\\" => @"C:\...\...\...\Folder\"
=> utilises Path.Combine : FileUpload1.SaveAs(Path.Combine(leCheminPasEnLiteral, FileUpload1.FileName));

2) String.Format, ça rend les choses plus lisibles (et donc maintenables avec moins de douleurs)
Label1.Text = "File name: " +
                     FileUpload1.PostedFile.FileName + "<br>" +
                     FileUpload1.PostedFile.ContentLength + " kb<br>" +
                     "Content type: " +
                     FileUpload1.PostedFile.ContentType;

=>
Label1.Text = String.Format("File name: {0}<br>{1} kb<br>Content type: {2}", 
  FileUpload1.PostedFile.FileName,
  FileUpload1.PostedFile.ContentLength,
  FileUpload1.PostedFile.ContentType
  );

Et si tu veux garder les sauts pour la lisibilité du code, tu peux, c'est permit, les chaines litérales sont concaténées à la compilation et non à l'execution (donc pas de problème de perf supplémentaire) :
Label1.Text = String.Format(
   "File name: {0}<br>"
   + "{1} kb<br>"
   + "Content type: {2}", 
  FileUpload1.PostedFile.FileName,
  FileUpload1.PostedFile.ContentLength,
  FileUpload1.PostedFile.ContentType
  );



/*
coq
MVP Visual C#
CoqBlog
*/

lundi 2 juin 2008 à 09:08:40 | Re : Upload de fichier

Gwaedion

Merci de tes remarques, je vais modifier mon code.



Cette discussion est classé dans : fichier, text, code, postedfile, btnchoixfichier


Répondre à ce message

Sujets en rapport avec ce message

generer un fichier [Mais un fichier ASP] [ par snoy_doc ] J'ai besoin de generer un fichier asp à l'aide d'un programme aspLe problème n'est pas le fichier lui même mais qu'est ce qu'il va contenir comme scri upload [ par Arkane ] J'ai construit un formulaire d'upload (avec un basile FILE !) et je voudrais dans mon traitement formulaire récupérer le nom du fichier que j'ai envoy pb de fichier de destination [ par screenup ] Bonjour, j'ai un probleme avec le code ci-dessous :CheminLocal = Server.MapPath(".\") & "\dossier" ' Dossier d'upload par defautIl s'agit d'un bout de code pour attacher un fichier avec base de données [ par bondgirl75018 ] salut , quelqu'un pourrait me dire comment insérer dans ma page internet un bouton attacher fichier et quel est le code qui va avec pour permettre de Contenu d'un fichier ZIP ??? [ par Skyride ] BonsoirJe parcours peu à peu les nouveaux sites du réseau Code Source et je suis tombé sur la fonctionnalité suivante :Comment visualiser le contenu d [.net] nom de fichier pour un download ? [ par jesusonline ] Bonjour, j'ai un petit problème: J'ai ecrit ca : Dim fichier As String = "c:/image.jpg" Dim FichierInfo As New FileInfo(fichier)<b lire et executer un fichier sql [ par jesusonline ] Bonjour, je crée un fichier .sql comme cela Public Sub EcrireRequete(ByVal sSql As String, ByVal Reset As Boolean) Directory.SetCurrentDi Telecharger un fichier text [ par adlm ] Comment faire pour que le client telecharge un fichier text directement sans que le navigateur l'ouvre automatiquement ? recupération de chaine [ par coeurdenoir ] Attention novice droit devant!Quelcun pourait il me dire comment expliquer a ce putin d'ordinateur de faire la tache suivant car vraiment j'ai beau lu recupération de données issus files.xls ou .txt [ par coeurdenoir ] Attention novice droit devant!Quelcun pourait il me dire comment expliquer a ce putin d'ordinateur de faire la tache suivant car vraiment j'ai beau lu


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 2,309 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.