MVC Проблема при попытке загрузить файл - PullRequest
0 голосов
/ 17 апреля 2009

Я прогуглил этот код, чтобы загрузить файл с MVC.

<form method="post" enctype="multipart/form-data" action="/Task/SaveFile">
<input type="file" id="FileBlob" name="FileBlob"/>
<input type="submit"  value="Save"/>
<input type="button" value="Cancel" onclick="window.location.href='/'" />
</form>

Но при опросе форм ["FileBlob"], когда я просматриваю файл и отправляю форму, становится пустым ????

Malcolm

РЕДАКТИРОВАТЬ: я добавил текстовое поле в форму, и я могу получить это значение штрафа. Просто файл типа ввода не работает?

bool errors = false;
   //this field is never empty, it contains the selected filename
   if ( string.IsNullOrEmpty( forms["FileBlob"] ) )
   {
       errors = true;
       ModelState.AddModelError( "FileBlob", "Please upload a file" );
   }
   else
   {
      string sFileName = forms["FileBlob"];
      var file = Request.Files["FileBlob"];
      //'file' is always null, and Request.Files.Count is always 0 ???
      if ( file != null )
      {
         byte[] buf = new byte[file.ContentLength];
         file.InputStream.Read( buf, 0, file.ContentLength );
         //do stuff with the bytes
      }
      else
      {
         errors = true;
         ModelState.AddModelError( "FileBlob", "Please upload a file" );
      }
   }
   if ( errors )
   {
      return ShowTheFormAgainResult(); 
   }
   else
   {
      return View();
   }
}

Ответы [ 2 ]

2 голосов
/ 17 апреля 2009

Воу, это одна запутанная установка, я лично никогда не усложняю подобные вещи со всеми этими операциями, если операторы и для нулевых значений делают с помощью проверки jquery, вы также можете выполнить проверку на стороне сервера. Вместо проверки if(errors) do if(ModelState.IsValid){ return View();} лучше интерпретировать

http://msdn.microsoft.com/en-us/library/dd410404.aspx

таким образом вы можете избавиться от этой настройки bool.

Также проверьте здесь

http://blogs.msdn.com/stcheng/archive/2009/03/20/asp-net-how-to-implement-file-upload-and-download-in-asp-net-mvc.aspx

для упрощения реализации структуры загрузки. Я использовал его и не столкнулся с какими-либо проблемами.

0 голосов
/ 16 ноября 2009

Этот ответ может помочь. Кроме того, я бы посоветовал не размещать другие поля формы вместе с загружаемым файлом. Делать это отдельно в отдельном действии. Конечно, это дает пользователю 2 шага, но, поверьте мне, это стоит того, чтобы с вашей стороны была простота.

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