728x90
반응형
728x170
Upload.cshtml 파일에서 파일 업로드를 위해 form 태그 내에서 input 태그의 name과 multiple 속성을 아래와 같이 설정하면
▶ Views/Test/Upload.cshtml
@{ Layout = null; }
<p>파일 업로드 크기 설정하기</p>
<hr />
<p>@ViewData["message"]</p>
<form asp-controller="Test" asp-action="Upload" method="post" enctype="multipart/form-data">
<input type="file" name="formFileCollection" multiple />
<br />
<br />
<button type="submit">업로드</button>
</form>
파일 업로드를 처리하는 컨트롤러의 액션 메소드에서 파일 정보를 전달받는 매개 변수의 데이터 타입은 Upload.cshtml 파일에서 form 태그의 multiple 속성 지정 여부를 떠나서 항상 ICollection<IFormFile> 타입으로 아래와 같이 설정한다.
728x90
▶ Controllers/TestController.cs
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace TestProject.Controllers
{
/// <summary>
/// 테스트 컨트롤러
/// </summary>
public class TestController : Controller
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 업로드 페이지 처리하기 - Upload()
/// <summary>
/// 업로드 페이지 처리하기
/// </summary>
/// <returns>액션 결과</returns>
[HttpGet]
public IActionResult Upload()
{
return View();
}
#endregion
#region 업로드 페이지 처리하기 - Upload(environment, formFileCollection)
/// <summary>
/// 업로드 페이지 처리하기
/// </summary>
/// <param name="environment">웹 호스트 환경</param>
/// <param name="formFile">폼 파일</param>
/// <returns>액션 결과</returns>
[HttpPost]
public IActionResult Upload([FromServices]IWebHostEnvironment environment, ICollection<IFormFile> formFileCollection)
{
string uploadDirectoryPath = Path.Combine(environment.WebRootPath, "upload");
long totalSize = 0L;
foreach(IFormFile formFile in formFileCollection)
{
string uploadFilePath = Path.Combine(uploadDirectoryPath, formFile.FileName);
using(FileStream fileStream = System.IO.File.Create(uploadFilePath))
{
formFile.CopyTo(fileStream);
fileStream.Flush();
}
totalSize += formFile.Length;
}
if(formFileCollection.Count == 1)
{
IFormFile formFile = formFileCollection.First();
ViewData["message"] = $"{formFile.FileName} 파일이 업로드되었습니다 : {formFile.Length:#,##0} 바이트";
}
else
{
ViewData["message"] = $"{formFileCollection.Count:#,##0}개 파일이 업로드되었습니다 : {totalSize:#,##0} 바이트";
}
return View();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > ASP.NET MVC' 카테고리의 다른 글
[C#/ASP.NET MVC] 누겟 설치 : Microsoft.Extensions.Caching.Memory (0) | 2020.10.14 |
---|---|
[C#/ASP.NET MVC] 누겟 설치 : Microsoft.AspNetCore.Session (0) | 2020.10.14 |
[C#/ASP.NET MVC] Kestrel 사용시 업로드 파일 크기 설정하기 (2) (0) | 2020.10.14 |
[C#/ASP.NET MVC] Kestrel 사용시 업로드 파일 크기 설정하기 (1) (0) | 2020.10.14 |
[C#/ASP.NET MVC] IIS Express 사용시 업로드 파일 크기 설정하기 (0) | 2020.10.14 |
[C#/ASP.NET MVC] 파일 업로드 액션 메소드에서 파일 정보를 전달받는 매개 변수의 데이터 타입 설정하기 (0) | 2020.10.14 |
[C#/ASP.NET MVC] JWT(Json Web Token) 인증 사용하기 (0) | 2020.10.13 |
[C#/ASP.NET MVC] 쿠키(Cookie) 인증 사용하기 (0) | 2020.10.12 |
[C#/ASP.NET MVC] 누겟 설치 : Microsoft.AspNetCore.Authentication.Cookies (0) | 2020.10.11 |
[C#/ASP.NET MVC] RequestFormLimitsAttribute 클래스 : 폼에서 특정 제한 설정하기 (0) | 2020.10.11 |
[C#/ASP.NET MVC] web.config 파일에서 최대 허용 컨텐트 길이 설정하기 (0) | 2020.10.11 |
댓글을 달아 주세요