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#.
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.");
}
}
}
pour vérifier si un fichier existe dans .NET, vous pouvez utiliser
System.IO.File.Exists (String)
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.
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.
vous pouvez utiliser:
System.IO.File.Exists(@"c:\temp\test.txt");
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.
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)
vous avez écrit asp.net -vous voulez télécharger un fichier?
si c'est le cas, vous pouvez utiliser le html
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.
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));
}
}
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; }
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";
}