ASP.NET MVC - проверьте, является ли загружаемый файл файлом .EXE или PDF - PullRequest
0 голосов
/ 25 июня 2019

Имея в виду этот код, как я могу проверить, имеет ли файл, который пользователь хочет загрузить, файл .EXE или .PDF, например

  [HttpPost]
    public JsonResult SaveInfo()
    {
        try
        {
            var model = JsonConvert.DeserializeObject<ApontamentoViewModel>(Request.Form["model"]);
            if (!string.IsNullOrWhiteSpace(model.filePath))
            {
                //convert to list
                var listArquivos = model.CaminhoArquivo.Split(';').Distinct().ToList();

                //for each file in the list, move from temporary folder to final folder
                model.filePath= string.Join(";", listArquivos);


                string caminhoRaiz = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings.Get("FinalUploadFolder"));
                _CaminhoRaizTempUpload = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings.Get("TempUploadFolder"));

                var files = Directory.EnumerateFiles(_CaminhoRaizTempUpload, "*.*", SearchOption.AllDirectories)
                                 .Where(s => listArquivos.Any(arquivo => s.Contains(arquivo)))
                                 .ToList();


                files.ForEach(arquivoMover =>
                {
                    var nomeArquivo = System.IO.Path.GetFileName(arquivoMover);
                    System.IO.File.Move(arquivoMover, System.IO.Path.Combine(caminhoRaiz, nomeArquivo));

                });

            }

1 Ответ

0 голосов
/ 25 июня 2019

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

System.IO.Path.GetExtension(FileName);

для извлечения расширения файла и использовать его, как показано ниже:

files.ForEach(arquivoMover =>
            {
                var nomeArquivo = System.IO.Path.GetFileName(arquivoMover);
                var fileExt = System.IO.Path.GetExtension(arquivoMover);
                if(fileExt==".EXE")
                { 
                    //is a .EXE file 
                }
                System.IO.File.Move(arquivoMover, System.IO.Path.Combine(caminhoRaiz, nomeArquivo));

            });

Кроме того, вы можете использовать традиционные строковые функции, чтобы получить последние 4символы из имени файла:

string fileExt = nomeArquivo.Substring((nomeArquivo.Length - 4), 4);

fileExt = fileExt.ToLower();
if(fileExt == ".exe")
  do_things_for_exe();
else if(fileExt == ".pdf")
  do_things_for_pdf();
else:
  throw new Exception("file format unrecognized");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...