asp.net-core-mvchttppostedfilebase

MVC 6 HttpPostedFileBase?


I am attempting to upload an image using MVC 6; however, I am not able to find the class HttpPostedFileBase. I have checked the GitHub and did not have any luck. Does anyone know the correct way to upload a file in MVC6?


Solution

  • MVC 6 used another mechanism to upload files. You can get more examples on GitHub or other sources. Just use IFormFile as a parameter of your action or a collection of files or IFormFileCollection if you want upload few files in the same time:

    public async Task<IActionResult> UploadSingle(IFormFile file)
    {
        FileDetails fileDetails;
        using (var reader = new StreamReader(file.OpenReadStream()))
        {
            var fileContent = reader.ReadToEnd();
            var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDisposition);
            var fileName = parsedContentDisposition.FileName;
        }
        ...
    }
    
    [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));
            }
            ...
        }
    }
    

    You can see current contract of IFormFile in asp.net sources. See also ContentDispositionHeaderValue for additional file info.