如何在 C# 中检查内容类型/应用程序文本

Posted

技术标签:

【中文标题】如何在 C# 中检查内容类型/应用程序文本【英文标题】:how to check content-type/application text in c# 【发布时间】:2012-08-13 14:53:45 【问题描述】:

我使用此代码检查内容类型:

字符串文件大小 = FileUpload1.PostedFile.ContentType;

但如果我将其他文件保存为 .txt 格式,则表示允许。

在c#中如何检查原始文本文件

【问题讨论】:

请改写你的问题,这没有意义,我也不能说问题出在哪里。 【参考方案1】:

试试这个(从similar question得到它):

string contentType = FileUpload1.PostedFile.ContentType

【讨论】:

【参考方案2】:

如果我了解您的问题,您正在寻找验证发布的文件类型。如果是这样,那么您可以检查文件扩展名。

if(FileUpload1.PostedFile.FileName.ToLowerInvariant().EndsWith(".txt"))

     // Do stuffs

更新 cmets:如果文件出现故障,则可以使用以下方法验证是否为二进制文件;如果不是,您可以将其视为文本文件。好吧,为了使用这种方法,您需要临时保存文件或需要更改方法以便它可以直接从流中读取。

注意:此方法不能为您提供 100% 准确的结果。但是,您可以预期 70-80%。这是这段代码的source link。

private bool IsBinaryFile(string filePath, int sampleSize = 10240)

    if (!File.Exists(filePath))
        throw  new ArgumentException("File path is not valid", filePath);

    var buffer = new char[sampleSize];
    string sampleContent;

    using (var sr = new StreamReader(filePath))
    
        int length = sr.Read(buffer, 0, sampleSize);
        sampleContent = new string(buffer, 0, length);
    

    //Look for 4 consecutive binary zeroes
    if (sampleContent.Contains("\0\0\0\0"))
        return true;

    return false;

【讨论】:

是的,我也检查了文件扩展名,但我需要检查文件内容类型是否为文本.. bcoz 假设我更改了其他文件并保存了 .txt 格式知道.. 这就是我需要检查的原因内容 在这种情况下,您是否要从文件中查找任何特定文本? 是的,我只上传了 txt 格式的文件,只是假设有人编辑了另一个文件并保存为 .txt 文件,知道那个时候我需要给出错误消息 ..

以上是关于如何在 C# 中检查内容类型/应用程序文本的主要内容,如果未能解决你的问题,请参考以下文章

C#中如何检查文本框的输入信息是不是为数字?

如何从文本框(windows窗体)检查主键是不是存在于我的数据库中,c#

如何使用 C# 获取检查元素代码

文件内容搜索c#

c#中的文本框里怎么判断输入的内容是啥类型

如何检查 Json 是不是匹配特定的 C# 类型?