web-dev-qa-db-fra.com

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
suresh

Vous pouvez déterminer si un fichier spécifié existe à l'aide de 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:\ResumesArchive\923823.txt";
        string newFile = @"c:\ResumesImport\newResume.txt";
        if (File.Exists(resumeFile))
        {
            File.Copy(resumeFile, newFile);
        }
        else
        {
            Console.WriteLine("Resume file does not exist.");
        }
    }
}
62
splattne

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

System.IO.File.Exists (String)
13
James Ogden
    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 ceci pour vérifier si une image existait avant de l'afficher.

7
Eric Bishard

La réponse simple est que vous ne pouvez pas - vous ne pourrez pas vérifier un fichier sur leur ordinateur à partir d’un site Web ASP, car cela présenterait un risque dangereux pour eux.

Vous devez leur donner un contrôle de téléchargement de fichier - et vous ne pouvez pas faire grand chose avec ce contrôle. Pour des raisons de sécurité, javascript ne peut pas vraiment y toucher.

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

Ils sélectionnent ensuite un fichier à télécharger et vous devez gérer tout fichier vide qu’ils pourraient envoyer côté serveur.

3
Keith

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

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

Dans ce cas, toutefois, vous recevez des entrées d'un utilisateur et vous avez peu de raisons de croire que le fichier existe. Ici, vous devriez toujours utiliser File.Exists ().

Je sais que c’est un cliché, mais vous ne devriez utiliser Exceptions que pour un événement exceptionnel et non pas comme partie intégrante du flux normal de votre application. Cela coûte cher et rend le code plus difficile à lire/à suivre.

2
Todd Friedlich

Essaye ça:

     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));
            }
        }
2
Jmocke

Vous pouvez utiliser:

System.IO.File.Exists(@"c:\temp\test.txt");
2
Ruben

En plus d'utiliser File.Exists(), vous feriez mieux d'essayer simplement d'utiliser le fichier et de capturer toute exception levée. Le fichier peut ne pas s'ouvrir car il n'existe pas encore.

1
erikkallen

Ces réponses supposent toutes que le fichier que vous vérifiez se trouve du côté serveur. Malheureusement, il n’existe aucun moyen sûr de s’assurer qu’un fichier existe côté client (par exemple, si vous téléchargez le CV). Bien sûr, vous pouvez le faire en Javascript mais vous n’allez toujours pas être sûr à 100% du côté serveur.

La meilleure façon de gérer cela, à mon avis, est de supposer que l'utilisateur va réellement sélectionner un fichier approprié pour le téléchargement, puis de faire le travail que vous devez faire pour vous assurer que le fichier téléchargé correspond à vos attentes (indice - supposez que l'utilisateur essaye d’empoisonner votre système de toutes les manières possibles avec son apport)

1
ZombieSheep

Vous avez écrit asp.net - cherchez-vous à télécharger un fichier?
si vous pouvez utiliser le code HTML 

<type d'entrée = "fichier" ...

1
Dror

J'ai écrit ce code en vb et il fonctionne bien pour vérifier si un fichier existe ou non pour le contrôle fileupload. l'essayer 

FOR VB CODE =============

    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 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
manishN

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
Deekshit Kumar