2016-01-12 2 views
2

У меня есть один метод post, в котором есть один элемент управления загрузкой файлов. Чтобы получить этот файл загружен в контроллер, я получаю сообщение об ошибке, как показано ниже:«HttpRequest» не содержит определения для «файлов»

Error CS1061 'HttpRequest' does not contain a definition for 'Files' and no extension method 'Files' accepting a first argument of type 'HttpRequest' could be found (are you missing a using directive or an assembly reference?) 

Мой код, как показано ниже:

[ValidateAntiForgeryToken] 
     [HttpPost] 
     public async Task<IActionResult> TeamUserDetail(TeamUsers model) 
     { 
      var file = Request.Files[0]; 
      return View(); 
     } 

В Request.Files [0] это дает ошибку, показанную выше. MVC6 используется в проекте.

Прошу вас, руководствоваться мной. Не хватает ли каких-либо ссылок для добавления?

Thank you

+0

http://www.mikesdotnetting.com/article/288/asp-net-5-uploading-files-with-asp-net-mvc-6 –

ответ

2

MVC 6 использовали другой механизм для загрузки файлов. Вы можете получить больше примеров на GitHub или other sources. Просто используйте IFormFile в качестве параметра своего действия:

public FileDetails UploadSingle(IFormFile file) 
{ 
    FileDetails fileDetails; 
    using (var reader = new StreamReader(file.OpenReadStream())) 
    { 
     var fileContent = reader.ReadToEnd(); 
     var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDisposition); 
     fileDetails = new FileDetails 
     { 
      Filename = parsedContentDisposition.FileName, 
      Content = fileContent 
     }; 
    } 

    return fileDetails; 
} 

[HttpPost] 
public async Task<IActionResult> UploadMultiple(ICollection<IFormFile> files) 
{ 
    var uploads = Path.Combine(_environment.WebRootPath,"uploads"); 
    foreach(var file in files) 
    { 
     if(file.Length > 0) 
     { 
      var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); 
      await file.SaveAsAsync(Path.Combine(uploads,fileName)); 
     } 
    return View(); 
    } 
} 

Вы можете увидеть текущий договор IFormFile в asp.net sources.