Member 13857567 Ответов: 1

Загрузка файла проверка на вирусы


я хочу загрузить файл проверки на вирусы

Что я уже пробовал:

public void scanfile()
   {
       string c;
           bool IsValid = true;
       //foreach (FileInfo file in fileuploadExcel.Unload)
       //{
       try
       {
           //do av check here
           Process myProcess = new Process();
           FileUpload1.SaveAs(Server.MapPath("~\\uploadphoto\\") + FileUpload1.FileName);
           //address of command line virus scan exe
           myProcess.StartInfo.FileName = Server.MapPath("~\\AVG10\\avgscanx.exe");


           string path = '"' + "" + Server.MapPath("~\\uploadphoto\\") + "" + FileUpload1.FileName + "" + '"';
           string report = '"' + "" + Server.MapPath("~\\uploadphoto\\Report.txt") + "" + '"';
           string myprocarg = "/SCAN=" + path + " /REPORT=" + report;
           //" /REPORT=C:\\Upload\\Temp\\Report.txt";
           myProcess.StartInfo.Arguments = myprocarg;
           myProcess.StartInfo.UseShellExecute = false;
           myProcess.StartInfo.RedirectStandardOutput = true;

           myProcess.Start();
           myProcess.WaitForExit(); //wait for the scan to complete
                                    //add some time for report to be written to file
           int j = 0;
           int y = 0;
           for (j = 0; j <= 1000000; j++)
           {
               y = y + 1;
           }
           //Get a StreamReader class that can be used to read the file
           StreamReader objStreamReader = default(StreamReader);
           objStreamReader = File.OpenText(Server.MapPath("~\\VirusScan\\Report.txt"));
           String reportVerbose = objStreamReader.ReadToEnd().Trim();
           if (reportVerbose.Length > 0 && !reportVerbose.Contains("Found infections    :    0"))
           {
               IsValid = false;
               File.Delete(Server.MapPath("~\\VirusScan\\temp\\") + "" + FileUpload1.FileName);
           }
           objStreamReader.Close();
           if (IsValid)
           {
               try
               {
                   if (!Directory.Exists(Server.MapPath("~/DataFiles/")))
                       Directory.CreateDirectory(Server.MapPath("~/DataFiles/"));
                   if (!File.Exists(Server.MapPath("~/DataFiles/" + System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName))))
                   {
                       FileUpload1.SaveAs(Server.MapPath("~/DataFiles/") + FileUpload1.FileName);
                   }
                   else
                   {
                       try
                       {
                           File.Delete(Server.MapPath("~/DataFiles/" + System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName)));
                           FileUpload1.SaveAs(Server.MapPath("~/DataFiles/") + FileUpload1.FileName);
                       }
                       catch (System.IO.IOException)
                       {

                       }
                   }
               }
               catch (System.IO.IOException)
               {

               }

           }
       }
       catch (System.IO.IOException)
       {

       }

1 Ответов

Рейтинг:
2

Jochen Arndt

И в чем конкретно заключается ваша проблема?

Некоторые общие советы:

  • Сообщать об ошибках. Перехват исключений без сообщения об ошибках на самом деле не помогает. Особенно во время разработки сообщения об ошибках сообщат вам, что пошло не так, так что в большинстве случаев нет необходимости в сеансах отладки.
  • Проверьте каждую из ваших задач отдельно. Начните с загрузки. Файл загружен?
  • Проверьте свои пути: находится ли AV-сканер в каталоге веб-сервера Server.MapPath("~\\AVG10\\avgscanx.exe")- Наверное, нет.
  • Проверьте свои пути: вы установили путь отчета на "~\\uploadphoto\\Report.txt-но я пытаюсь прочитать отчет от ... ~\\VirusScan\\Report.txt".
  • Проверьте сканирование с помощью Тестовый файл EICAR - Википедия[^] хранится в известном месте.