私はコンテンツタイプをチェックするためにこのコードを使用しました:
文字列 fileSize = FileUpload1.PostedFile.ContentType;
しかし、他のファイルを.txt形式で保存すると、許可されます。
C#で元のテキストファイルをチェックする方法
私はコンテンツタイプをチェックするためにこのコードを使用しました:
文字列 fileSize = FileUpload1.PostedFile.ContentType;
しかし、他のファイルを.txt形式で保存すると、許可されます。
C#で元のテキストファイルをチェックする方法
これを試してください(同様の質問から取得しました):
string contentType = FileUpload1.PostedFile.ContentType
あなたの問題の傾向を理解できれば、投稿されたファイルの種類を検証しようとしています。その場合は、ファイル拡張子を確認できます。
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;
}