Vérifier si le fichier existe ou non en C#

je travaille sur une application. Cette application devrait obtenir le CV des utilisateurs, de sorte que j'ai besoin d'un code pour vérifier si un fichier existe ou non.

j'utilise ASP.NET / C#.

23
demandé sur splattne 2009-01-06 12:54:23

12 réponses

vous pouvez déterminer si un fichier existe en utilisant la méthode Exists de la classe File dans l'espace de noms System.IO :

bool System.IO.File.Exists(string path)

vous pouvez trouver la documentation ici sur MSDN .

exemple:

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string resumeFile = @"c:\ResumesArchive3823.txt";
        string newFile = @"c:\ResumesImport\newResume.txt";
        if (File.Exists(resumeFile))
        {
            File.Copy(resumeFile, newFile);
        }
        else
        {
            Console.WriteLine("Resume file does not exist.");
        }
    }
}
61
répondu splattne 2009-03-17 14:43:19

pour vérifier si un fichier existe dans .NET, vous pouvez utiliser

System.IO.File.Exists (String)
12
répondu James Ogden 2011-11-21 15:24:15
    if (File.Exists(Server.MapPath("~/Images/associates/" + Html.DisplayFor(modelItem => item.AssociateImage)))) 
      { 
        <img src="~/Images/associates/@Html.DisplayFor(modelItem => item.AssociateImage)"> 
      }
        else 
      { 
        <h5>No image available</h5> 
      }

j'ai fait quelque chose comme ça pour vérifier si une image existait avant de l'afficher.

7
répondu Eric Bishard 2013-11-27 22:30:14

la réponse Simple est que vous ne pouvez pas - vous ne serez pas en mesure de vérifier un fichier sur leur machine à partir d'un site Web ASP, car de le faire serait un risque dangereux pour eux.

vous devez leur donner un contrôle de téléchargement de fichier - et il n'y a pas beaucoup que vous pouvez faire avec ce contrôle. Pour des raisons de sécurité, javascript ne peut pas y toucher.

<asp:FileUpload ID="FileUpload1" runat="server" />

ils choisissent ensuite un fichier à télécharger, et vous devez traiter avec tout fichier vide qu'ils pourraient envoyer côté serveur.

3
répondu Keith 2009-01-06 12:59:36

vous pouvez utiliser:

System.IO.File.Exists(@"c:\temp\test.txt");
2
répondu Ruben 2009-01-06 09:58:59

ne peut pas encore commenter, mais je voulais juste être en désaccord/clarifier avec erikkallen .

vous ne devriez pas simplement attraper l'exception dans la situation que vous avez décrite. Si vous saviez que le fichier devrait être là et en raison de certains cas exceptionnel , il n'était pas, alors il serait acceptable de simplement essayer d'accéder au fichier et de saisir toute exception qui se produit.

dans ce cas, cependant, vous êtes recevoir des données d'un utilisateur et avoir peu de raisons de croire que le fichier existe. Ici, vous devez toujours utiliser le Fichier.Exister.)(

je sais que c'est un cliché, mais vous ne devez utiliser des Exceptions que pour un événement exceptionnel, et non pas comme faisant partie du flux normal de votre application. C'est cher et rend le code plus difficile à lire/suivre.

2
répondu Todd Friedlich 2017-05-23 11:55:06

ces réponses supposent Toutes que le fichier que vous vérifiez est du côté du serveur. Malheureusement, il n'y a aucun moyen de s'assurer qu'un fichier existe du côté du client (par exemple si vous téléchargez le CV). Bien sûr, vous pouvez le faire en Javascript, mais vous n'êtes toujours pas sûr à 100% sur le côté serveur.

la meilleure façon de gérer cela, à mon avis, est de supposer que l'utilisateur va effectivement sélectionner un fichier approprié pour le téléchargement, et puis faire quelque travail que vous besoin de faire pour s'assurer que le fichier téléchargé Est ce que vous attendez (indice - supposer que l'utilisateur essaie d'empoisonner votre système de toutes les façons possibles avec son entrée)

1
répondu ZombieSheep 2009-01-06 12:43:50

vous avez écrit asp.net -vous voulez télécharger un fichier?

si c'est le cas, vous pouvez utiliser le html

1
répondu Dror 2009-01-06 12:45:16

en plus d'utiliser File.Exists() , vous pourriez être mieux d'essayer d'utiliser le fichier et d'attraper n'importe quelle exception qui est lancée. Le fichier peut ne pas ouvrir parce que d'autres choses que de ne pas exister.

1
répondu erikkallen 2011-11-21 15:24:40

essayez ceci:

     string fileName = "6d294041-34d1-4c66-a04c-261a6d9aee17.jpeg";

     string deletePath= "/images/uploads/";

     if (!string.IsNullOrEmpty(fileName ))
        {
            // Append the name of the file to previous image.
            deletePath += fileName ;

            if (File.Exists(HttpContext.Current.Server.MapPath(deletePath)))
            {
                // deletevprevious image
                File.Delete(HttpContext.Current.Server.MapPath(deletePath));
            }
        }
1
répondu Jmocke 2016-03-04 16:44:15

Cela peut vous aider.

try
   {
       con.Open();
       if ((fileUpload1.PostedFile != null) && (fileUpload1.PostedFile.ContentLength > 0))
       {
           filename = System.IO.Path.GetFileName(fileUpload1.PostedFile.FileName);
           ext = System.IO.Path.GetExtension(filename).ToLower();
           string str=@"/Resumes/" + filename;
           saveloc = (Server.MapPath(".") + str);
           string[] exts = { ".doc", ".docx", ".pdf", ".rtf" };
           for (int i = 0; i < exts.Length; i++)
           {
               if (ext == exts[i])
                   fileok = true;
           }
           if (fileok)
           {
               if (File.Exists(saveloc))
                   throw new Exception(Label1.Text="File exists!!!");
               fileUpload1.PostedFile.SaveAs(saveloc);
               cmd = new SqlCommand("insert into candidate values('" + candidatename + "','" + candidatemail + "','" + candidatemobile + "','" + filename + "','" + str + "')", con);
               cmd.ExecuteNonQuery();
               Label1.Text = "Upload Successful!!!";
               Label1.ForeColor = System.Drawing.Color.Blue;
               con.Close();
           }
           else
           {
               Label1.Text = "Upload not successful!!!";
               Label1.ForeColor = System.Drawing.Color.Red;
           }
       }

    }
   catch (Exception ee) { Label1.Text = ee.Message; }
0
répondu Deekshit Kumar 2013-01-30 05:20:41

j'ai écrit ce code en vb et son fonctionne très bien pour vérifier si un fichier existe ou non pour le contrôle de fileupload. essayez

POUR LE CODE VB============

    If FileUpload1.HasFile = True Then
        Dim FileExtension As String = System.IO.Path.GetExtension(FileUpload1.FileName)

        If FileExtension.ToLower <> ".jpg" Then
            lblMessage.ForeColor = System.Drawing.Color.Red
            lblMessage.Text = "Please select .jpg image file to upload"
        Else
            Dim FileSize As Integer = FileUpload1.PostedFile.ContentLength

            If FileSize > 1048576 Then
                lblMessage.ForeColor = System.Drawing.Color.Red
                lblMessage.Text = "File size (1MB) exceeded"
            Else
                Dim FileName As String = System.IO.Path.GetFileName(FileUpload1.FileName)

                Dim ServerFileName As String = Server.MapPath("~/Images/Folder1/" + FileName)

                If System.IO.File.Exists(ServerFileName) = False Then
                    FileUpload1.SaveAs(Server.MapPath("~/Images/Folder1/") + FileUpload1.FileName)
                    lblMessage.ForeColor = System.Drawing.Color.Green
                    lblMessage.Text = "File : " + FileUpload1.FileName + " uploaded successfully"
                Else
                    lblMessage.ForeColor = System.Drawing.Color.Red
                    lblMessage.Text = "File : " + FileName.ToString() + " already exsist"
                End If
            End If
        End If
    Else
        lblMessage.ForeColor = System.Drawing.Color.Red
        lblMessage.Text = "Please select a file to upload"
    End If

POUR LE CODE C# ======================

if (FileUpload1.HasFile == true) {
    string FileExtension = System.IO.Path.GetExtension(FileUpload1.FileName);

    if (FileExtension.ToLower != ".jpg") {
        lblMessage.ForeColor = System.Drawing.Color.Red;
        lblMessage.Text = "Please select .jpg image file to upload";
    } else {
        int FileSize = FileUpload1.PostedFile.ContentLength;

        if (FileSize > 1048576) {
            lblMessage.ForeColor = System.Drawing.Color.Red;
            lblMessage.Text = "File size (1MB) exceeded";
        } else {
            string FileName = System.IO.Path.GetFileName(FileUpload1.FileName);

            string ServerFileName = Server.MapPath("~/Images/Folder1/" + FileName);

            if (System.IO.File.Exists(ServerFileName) == false) {
                FileUpload1.SaveAs(Server.MapPath("~/Images/Folder1/") + FileUpload1.FileName);
                lblMessage.ForeColor = System.Drawing.Color.Green;
                lblMessage.Text = "File : " + FileUpload1.FileName + " uploaded successfully";
            } else {
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Text = "File : " + FileName.ToString() + " already exsist";
            }
        }
    }
} else {
    lblMessage.ForeColor = System.Drawing.Color.Red;
    lblMessage.Text = "Please select a file to upload";
}
0
répondu manishN 2016-01-08 10:03:10