Request.File.Count по-прежнему имеет значение 1, когда при загрузке файла в ASP.Net MVC обнаружена предыдущая ошибка - PullRequest
3 голосов
/ 05 августа 2009

Я разрабатываю форму в ASP.Net MVC, где она содержит <input type="file" />, который не является обязательным в форме.

В моем контроллере у меня есть этот код:

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult Create(FormCollection collection) {
        ...

        //get uploaded file
        if (Request.Files.Count > 0)
        {
            file = Request.Files["imgFileUpload"];
            if (file.ContentLength == 0)
            {
                throw new InvalidOperationException("File contents are empty");
            }
            ...
        } 
        ...
}

Теперь, когда пользователь загружает файл, который не имеет содержимого, форма вызывает исключение и запрашивает об этом пользователя - что ожидается.

Теперь, если пользователь решил, что он больше не собирается загружать какой-либо файл, и нажал кнопку отправки, все равно отобразится предыдущее исключение, что довольно странно.

Я попытался проверить значения для Request.Files и заметил, что его счетчик все еще равен 1 ... он все еще думает, что там есть файл, учитывая, что пользователь не поместил файл в <input type="file" /> контроль.

Кто-нибудь сталкивался с этим? Если да, какие шаги вы предприняли, чтобы не допустить повторного выполнения предыдущего исключения?

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 28 ноября 2011

Я только что столкнулся с той же проблемой в аналогичном сценарии, я сделал следующее, чтобы исправить это:

 if(Request.Files.Count >  0)
 {
     if(Request.Files[0].ContentLength > 0)
     {
         //Upload the file... 
     }
 }
0 голосов
/ 14 августа 2009

Просто удалось найти способ решить эту проблему. Мне нужно было проверить, есть ли на контроллере входного файла какие-либо значения. Если это так, загрузите файл, в противном случае оставьте его как есть.

НТН!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...