10

ASPX ページに投稿するファイルをアップロードするためにユーザーが使用する必要がある HTML ページにフォームがあります。コード ビハインドでは、ファイルが実際に読み込まれたかどうかをテストします。

if (Request.Files.Count > 0)
{
    DoStuff(Request.Files[0]);
}
else
{
    throw new Exception("A CSV file must be selected for upload.");
}

私は決して他に行きません。これが ASP.NET の動作ですか? タイプがファイルの入力要素がある場合、「ファイル」が選択されていなくても、常に「ファイル」をアップロードしますか?

これを行う適切な方法は何ですか?もしかしてこれ?

if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
{
    DoStuff(Request.Files[0]);
}
else
{
    throw new Exception("A CSV file must be selected for upload.");
}
4

5 に答える 5

8

多分これだけでうまくいきます:

if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
{
    DoStuff(Request.Files[0]);
}
else
{
    throw new Exception("A CSV file must be selected for upload.");
}
于 2010-12-10T19:06:13.560 に答える
2

FileUpload コントロールを使用し、.HasFiles をチェックして、何かがアップロードされたかどうかを確認する必要があります。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.aspx

于 2010-12-10T18:13:29.467 に答える
-1

また、.count メソッドによって返されるデータが文字列でないことも確認します。文字列値 '0' は常に int 値 0 よりも大きくなります。その条件では常に true を返します。

.count の戻り値を int として型キャストして、適切な型が比較されていることを確認します。文字列 '-1' でさえ、int ゼロよりも高いビット値を持ちます。

単なる思い込みですが、間違っているかもしれません....

于 2010-12-10T23:15:09.143 に答える