httprequest.files.count永远不会等于零
-
08-10-2019 - |
题
我在HTML页面上有一个表单,用户需要使用该表单将其上传到ASPX页面上的文件上传。在后面的代码中,我想测试是否实际加载了文件。
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.");
}
解决方案
也许只是这样做:
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.");
}
其他提示
Request.Files.Count
总是包含否。的 <input type="file">
形式的元素,包裹在 Key:Value
店铺。
因此,如果您的发布表格不包含任何 <input type="file">
然后 Request.Files.Count
将返回 0
.
每个 Key
是个 name
的 <input type="file" name="OneOfTheKeys">
价值是类型的 HttpPostedFileWrapper
.
看 这里 学习关于 HttpPostedFileWrapper
.
您应该使用fileupload控件并检查.hasfiles以查看是否上传了任何内容。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.aspx
我还将确保通过.count方法返回的数据不是字符串。 '0'的字符串值总是大于int值0;在这种情况下,它总是会返回的。
我将尝试将.COUNT RETURT打字作为INT,以确保比较适当的类型。即使是字符串'-1'的位值也高于int零。
只是一个想法,尽管我可能错了。
不隶属于 StackOverflow