Comment trouver l’extension d’un fichier?

Dans mon application Web (asp.net, c #), je télécharge un fichier vidéo dans une page, mais je souhaite télécharger uniquement des vidéos FLV. Comment puis-je restreindre le téléchargement d’autres vidéos d’extension?

Path.GetExtension

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

Vous pouvez simplement lire le stream d’un fichier

 using (var target = new MemoryStream()) { postedFile.InputStream.CopyTo(target); var array = target.ToArray(); 

Les premiers index 5/6 vous indiqueront le type de fichier. En cas de FLV sa

octet statique en lecture seule privé [] FLV = {70, 76, 86, 1, 5};

 Just do - var isAllowed = array.Take(5).SequenceEqual(FLV); 

si oui alors son FLV.

OU

Lire le contenu d’un fichier

 var contentArray = target.GetBuffer(); var content = Encoding.ASCII.GetSsortingng(contentArray); 

Les deux ou trois premières lettres vous indiqueront le type de fichier. En cas de FLV sa

“FLV | \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 ……”

 Just do - content.StartsWith("FLV") 

Sur le serveur, vous pouvez vérifier le type MIME, rechercher le type MIME FLV ici ou sur Google.

Vous devriez vérifier que le type MIME est

 video/x-flv 

Si vous utilisiez un FileUpload en C # par exemple, vous pourriez le faire

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

Je ne sais pas si c’est ce que vous voulez mais:

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

Ou:

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

Vous ne pourrez pas restreindre le type de fichier que l’utilisateur télécharge du côté client [*]. Vous ne pourrez le faire que du côté du serveur. Si un utilisateur télécharge un fichier incorrect, vous ne pourrez le reconnaître qu’une fois le fichier téléchargé téléchargé. Il n’existe aucun moyen fiable et sûr d’empêcher un utilisateur de télécharger le format de fichier de son choix.

[*] oui, vous pouvez faire toutes sortes de trucs astucieux pour détecter l’extension du fichier avant de lancer le téléchargement, mais ne vous y fiez pas. Quelqu’un le contournera et téléchargera tout ce qu’il voudra tôt ou tard.

De plus, si vous avez un FileInfo fi , vous pouvez simplement faire:

 ssortingng ext = fi.Extension; 

et il contiendra l’extension du fichier (note: il inclura le . , donc le résultat de ce qui précède pourrait être: .jpg .txt , et ainsi de suite ….

Vous pouvez vérifier la signature .flv. Vous pouvez télécharger la spécification ici:

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

Voir le chapitre “En-tête FLV”.

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

La méthode ci-dessus fonctionne bien avec Firefox et IE, je suis capable de voir tous les types de fichiers comme zip, txt, xls, xlsx, doc, docx, jpg, png

mais quand j’essaie de trouver l’extension de fichier de googlechrome, j’ai échoué.

Cette solution aide également dans le cas de plusieurs extensions comme “Avishay.student.DB”

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

Se termine par()

J’ai trouvé une autre solution chez DotNetPerls que je préférais car elle ne nécessite pas de spécifier un chemin. Voici un exemple où j’ai rempli un tableau à l’aide d’une méthode personnalisée

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

Il convient de mentionner comment supprimer l’extension en parallèle avec l’obtention de l’extension:

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