如何查找文件的扩展名?

时间:2009-12-11 09:30:10

标签: c# asp.net

在我的网络应用程序(asp.net,c#)中我在一个页面上传视频文件,但我只想上传flv视频。我如何限制上传其他扩展视频的时间?

12 个答案:

答案 0 :(得分:223)

Path.GetExtension

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

答案 1 :(得分:14)

您可以简单地阅读文件流

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

前5/6索引会告诉您文件类型。在FLV的情况下,其 70,76,86,1,5

private static readonly byte[] FLV = { 70, 76, 86, 1, 5};

bool isAllowed = array.Take(5).SequenceEqual(FLV);

如果isAllowed等于true,那么它的FLV。

阅读文件内容

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

前两个/三个字母会告诉您文件类型 在FLV的情况下它的“FLV ......”

content.StartsWith("FLV")

答案 2 :(得分:7)

在服务器上,您可以检查MIME类型,在此处或在Google上查找flv mime类型。

你应该检查mime类型是

video/x-flv

例如,如果您在C#中使用FileUpload,则可以执行

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

答案 3 :(得分:6)

我不确定这是否是你想要的,但是:

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

或者:

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

答案 4 :(得分:4)

此外,如果您有FileInfo fi,则可以执行以下操作:

string ext = fi.Extension;

并且它会保留文件的扩展名(注意:它将包含.,因此上述结果可能是:.jpg .txt,所以上....

答案 5 :(得分:2)

您将无法限制用户在客户端[*]上传的文件类型。您只能在服务器端执行此操作。如果用户上传的文件不正确,您只能在上传文件后才能识别出来。没有可靠而安全的方法来阻止用户上传他们想要的任何文件格式。

[*]是的,你可以在开始上传之前做各种聪明的事情来检测文件扩展名,但不要依赖它。有人会绕过它并迟早上传他们喜欢的任何东西。

答案 6 :(得分:2)

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

以上方法适用于firefox和IE,我可以查看所有类型的文件,如zip,txt,xls,xlsx,doc,docx,jpg,png

但是当我试图从googlechrome找到文件的扩展名时,我失败了。

答案 7 :(得分:2)

值得一提的是如何在获取扩展名的同时删除扩展名:

select

答案 8 :(得分:1)

您可以查看.flv签名。您可以在此处下载规范:

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

请参阅“FLV标题”一章。

答案 9 :(得分:0)

此解决方案还可以帮助处理多个扩展程序,例如“Avishay.student.DB”

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

答案 10 :(得分:0)

<强> EndsWith()

DotNetPerls找到了我更喜欢的替代解决方案,因为它并不需要您指定路径。这是我在自定义方法

的帮助下填充数组的示例
2015-11-13 03:50:18

答案 11 :(得分:0)

private string GetExtension(string attachment_name)
{
    var index_point = attachment_name.IndexOf(".") + 1;
    return attachment_name.Substring(index_point);
}