Подтвердить что ты не робот

Убедитесь, что файл существует или нет в С#

Я работаю над приложением. Это приложение должно получить резюме от пользователей, так что мне нужен код для проверки наличия файла или нет.

Я использую ASP.NET/С#.

4b9b3361

Ответ 1

Вы можете определить, существует ли указанный файл с помощью метода Exists класса File в пространстве имен System.IO:

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

Документацию можно найти здесь, в MSDN.

Пример:

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.");
        }
    }
}

Ответ 2

Чтобы проверить, существует ли файл в .NET, вы можете использовать

System.IO.File.Exists (String)

Ответ 3

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

Я сделал что-то вроде этого, чтобы проверить, существует ли изображение перед его отображением.

Ответ 4

Простой ответ заключается в том, что вы не можете - вы не сможете проверить файл на своей машине с веб-сайта ASP, так как это опасно для них.

Вы должны дать им контроль над загрузкой файлов - и с этим элементом управления вы не сможете многое сделать. По соображениям безопасности javascript не может потрогать его.

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

Затем они выбирают файл для загрузки, и вам приходится иметь дело с любым пустым файлом, который они могли бы отправить на сервер.

Ответ 5

Вы можете использовать:

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

Ответ 6

Не могу комментировать, но я просто хотел не согласиться/уточнить с помощью erikkallen.

Вы не должны просто улавливать исключение в описанной ситуации. Если вы знаете, что файл должен быть там и из-за какого-то исключительного случая, это не так, тогда было бы приемлемо просто попытаться получить доступ к файлу и поймать любое исключение.

В этом случае, однако, вы получаете вход от пользователя и не имеете оснований полагать, что файл существует. Здесь вы всегда должны использовать File.Exists().

Я знаю, что это клише, но вы должны использовать Исключения только для исключительного события, а не как часть обычного потока вашего приложения. Это дорого и делает код более трудным для чтения/наблюдения.

Ответ 7

В дополнение к использованию File.Exists() вам может быть лучше просто попытаться использовать файл и поймать любое исключение, которое будет выбрано. Файл может не открыться из-за других вещей, кроме существующих.

Ответ 8

Эти ответы все предполагают, что файл, который вы проверяете, находится на стороне сервера. К сожалению, нет никакого чугунного способа гарантировать, что файл существует на стороне клиента (например, если вы загружаете резюме). Конечно, вы можете сделать это в Javascript, но вы по-прежнему не будете на 100% уверенны на стороне сервера.

Лучший способ справиться с этим, на мой взгляд, состоит в том, чтобы предположить, что пользователь фактически выберет подходящий файл для загрузки, а затем выполнит любую работу, необходимую для обеспечения того, чтобы загруженный файл был тем, что вы ожидаете (подсказка - предположите, что пользователь пытается отравить вашу систему всеми возможными способами с помощью своего ввода)

Ответ 9

Вы писали asp.net - вы хотите загрузить файл?
если это так, вы можете использовать html

< input type="file"...

Ответ 10

Это может вам помочь.

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 [email protected]"/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; }

Ответ 11

Я написал этот код в vb, и он отлично работает, чтобы проверить погоду. Файл существует или нет для управления файловой загрузкой. попробуйте

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

КОД С# ======================

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";
}

Ответ 12

Попробуйте следующее:

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