diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormFileModelBinder.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormFileModelBinder.cs index f70074a1b2..2d67487d24 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormFileModelBinder.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/FormFileModelBinder.cs @@ -102,19 +102,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding foreach (var file in form.Files) { - ContentDispositionHeaderValue parsedContentDisposition; - ContentDispositionHeaderValue.TryParse(file.ContentDisposition, out parsedContentDisposition); - // If there is an in the form and is left blank. - if (parsedContentDisposition == null || - (file.Length == 0 && - string.IsNullOrEmpty(HeaderUtilities.RemoveQuotes(parsedContentDisposition.FileName)))) + if (file.Length == 0 && string.IsNullOrEmpty(file.FileName)) { continue; } - var fileName = HeaderUtilities.RemoveQuotes(parsedContentDisposition.Name); - if (fileName.Equals(modelName, StringComparison.OrdinalIgnoreCase)) + if (file.Name.Equals(modelName, StringComparison.OrdinalIgnoreCase)) { postedFiles.Add(file); } diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormFileModelBinderTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormFileModelBinderTest.cs index d384f7e7cd..db9f39857a 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormFileModelBinderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ModelBinding/FormFileModelBinderTest.cs @@ -66,26 +66,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding Assert.Equal(2, files.Count); } - [Fact] - public async Task FormFileModelBinder_FilesWithQuotedContentDisposition_BindSuccessful() - { - // Arrange - var formFiles = new FormFileCollection(); - formFiles.Add(GetMockFormFileWithQuotedContentDisposition("file", "file1.txt")); - formFiles.Add(GetMockFormFileWithQuotedContentDisposition("file", "file2.txt")); - var httpContext = GetMockHttpContext(GetMockFormCollection(formFiles)); - var bindingContext = GetBindingContext(typeof(IEnumerable), httpContext); - var binder = new FormFileModelBinder(); - - // Act - var result = await binder.BindModelResultAsync(bindingContext); - - // Assert - Assert.NotEqual(default(ModelBindingResult), result); - var files = Assert.IsAssignableFrom>(result.Model); - Assert.Equal(2, files.Count); - } - [Fact] public async Task FormFileModelBinder_ExpectSingleFile_BindFirstFile() { @@ -103,8 +83,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding // Assert Assert.NotEqual(default(ModelBindingResult), result); var file = Assert.IsAssignableFrom(result.Model); - Assert.Equal("form-data; name=file; filename=file1.txt", - file.ContentDisposition); + Assert.Equal("file1.txt", file.FileName); } [Fact] @@ -167,10 +146,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding Assert.NotEqual(default(ModelBindingResult), result); Assert.True(result.IsModelSet); var file = Assert.IsAssignableFrom(result.Model); - - ContentDispositionHeaderValue contentDisposition; - ContentDispositionHeaderValue.TryParse(file.ContentDisposition, out contentDisposition); - Assert.Equal(expected, contentDisposition.Name); + + Assert.Equal(expected, file.Name); } [Fact] @@ -251,16 +228,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding private static IFormFile GetMockFormFile(string modelName, string filename) { var formFile = new Mock(); - formFile.Setup(f => f.ContentDisposition) - .Returns(string.Format("form-data; name={0}; filename={1}", modelName, filename)); - return formFile.Object; - } + formFile.Setup(f => f.Name).Returns(modelName); + formFile.Setup(f => f.FileName).Returns(filename); - private static IFormFile GetMockFormFileWithQuotedContentDisposition(string modelName, string filename) - { - var formFile = new Mock(); - formFile.Setup(f => f.ContentDisposition) - .Returns(string.Format("form-data; name=\"{0}\"; filename=\"{1}\"", modelName, filename)); return formFile.Object; } }