0

私はコンテンツタイプをチェックするためにこのコードを使用しました:

文字列 fileSize = FileUpload1.PostedFile.ContentType;

しかし、他のファイルを.txt形式で保存すると、許可されます。

C#で元のテキストファイルをチェックする方法

4

2 に答える 2

0

これを試してください(同様の質問から取得しました):

string contentType = FileUpload1.PostedFile.ContentType
于 2012-08-17T07:45:41.927 に答える
0

あなたの問題の傾向を理解できれば、投稿されたファイルの種類を検証しようとしています。その場合は、ファイル拡張子を確認できます。

if(FileUpload1.PostedFile.FileName.ToLowerInvariant().EndsWith(".txt"))
{
     // Do stuffs
}

コメントの更新: ファイルが誤動作している場合は、以下の方法を使用してバイナリ ファイルであるかどうかを確認できます。そうでない場合は、テキスト ファイルと見なすことができます。このメソッドを使用するには、ファイルを一時的に保存するか、ストリームから直接読み取れるようにメソッドを変更する必要があります。

注:この方法では 100% 正確な結果は得られません。ただし、70 ~ 80% を期待できます。このコードのソース リンクは次のとおりです。

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;
}
于 2012-08-17T06:59:39.543 に答える