c# - Как найти расширение файла?





asp.net (10)


Вы можете проверить подпись .flv. Вы можете скачать спецификацию здесь:

http://www.adobe.com/devnet/flv/

См. Главу «Заголовок FLV».

В моем веб-приложении (asp.net, c #) я загружаю видеофайл на страницу, но хочу загрузить только FLV-видео. Как я могу ограничить загрузку других видеороликов?




Это решение также помогает в случаях более чем одного расширения, такого как «Avishay.student.DB»,

                FileInfo FileInf = new FileInfo(filePath);
                string strExtention = FileInf.Name.Replace(System.IO.Path.GetFileNameWithoutExtension(FileInf.Name), "");



Стоит упомянуть, как удалить расширение также параллельно с получением расширения:

var name = Path.GetFileNameWithoutExtension(fileFullName); // Get the name only

var extension = Path.GetExtension(fileFullName); // Get the extension only



Path.GetExtension

string myFilePath = @"C:\MyFile.txt";
string ext = Path.GetExtension(myFilePath);
// ext would be ".txt"



EndsWith()

Нашел альтернативное решение в DotNetPerls которое мне понравилось, потому что оно не требует указания пути. Вот пример, когда я заполнил массив с помощью настраиваемого метода

        // This custom method takes a path 
        // and adds all files and folder names to the 'files' array
        string[] files = Utilities.FileList("C:\", "");
        // Then for each array item...
        foreach (string f in files)
        {
            // Here is the important line I used to ommit .DLL files:
            if (!f.EndsWith(".dll", StringComparison.Ordinal))
                // then populated a listBox with the array contents
                myListBox.Items.Add(f);
        }



Вы не сможете ограничить тип файла, который пользователь загружает на стороне клиента [*]. Вы сможете сделать это только на стороне сервера. Если пользователь загружает неправильный файл, вы сможете узнать, как только он будет загружен. Не существует надежного и безопасного способа остановить загрузку пользователем любого формата файла, который они хотят.

[*] да, вы можете делать всевозможные умные вещи, чтобы обнаружить расширение файла перед началом загрузки, но не полагайтесь на него. Кто-то обойдет его и загрузит все, что захочет, рано или поздно.




string FileExtn = System.IO.Path.GetExtension(fpdDocument.PostedFile.FileName);

Вышеупомянутый метод отлично работает с firefox и IE, я могу просматривать все типы файлов, такие как zip, txt, xls, xlsx, doc, docx, jpg, png

но когда я пытаюсь найти расширение файла с googlechrome, я потерпел неудачу.




Я не уверен, что это то, что вы хотите, но:

Directory.GetFiles(@"c:\mydir", "*.flv");

Или:

Path.GetExtension(@"c:\test.flv")



На сервере вы можете проверить тип MIME, искать тип flv mv здесь или в google.

Вы должны проверить, что тип mime

video/x-flv

Если вы использовали FileUpload в C #, например, вы могли бы сделать

FileUpload.PostedFile.ContentType == "video/x-flv"



Я даю вам простой и легкий способ понять и узнать.

Сначала вам нужно написать следующий код в файле .Cshtml .

<input name="Image" type="file" class="form-control" id="resume" />

то в контроллере введите следующий код:

if (i > 0) {
    HttpPostedFileBase file = Request.Files["Image"];


    if (file != null && file.ContentLength > 0) {
        if (!string.IsNullOrEmpty(file.FileName)) {
            string extension = Path.GetExtension(file.FileName);

            switch ((extension.ToLower())) {
                case ".doc":
                    break;
                case ".docx":
                    break;
                case ".pdf":
                    break;
                default:
                    ViewBag.result = "Please attach file with extension .doc , .docx , .pdf";
                    return View();
            }

            if (!Directory.Exists(Server.MapPath("~") + "\\Resume\\")) {
                System.IO.Directory.CreateDirectory(Server.MapPath("~") + "\\Resume\\");
            }

            string documentpath = Server.MapPath("~") + "\\Resume\\" + i + "_" + file.FileName;
            file.SaveAs(documentpath);
            string filename = i + "_" + file.FileName;
            result = _objbalResume.UpdateResume(filename, i);
            Attachment at = new Attachment(documentpath);

            //ViewBag.result = (ans == true ? "Thanks for contacting us.We will reply as soon as possible" : "There is some problem. Please try again later.");
        }
    } else {
        ...
    }
}

Для этого вам нужно сделать слой BAL и DAL в соответствии с вашей базой данных.





c# asp.net