Вопрос

У меня есть форма на странице 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 return в качестве int, чтобы убедиться, что сравниваются правильные типы. Даже строка '-1' имеет более высокое значение бита, чем int ill.

Просто мысль, хотя я мог ошибаться ....

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top