파일 이름에 특수 문자 처리하기: ASP.NET Core에서 파일 업로드 및 다운로드
요약: 웹 애플리케이션에서 파일 업로드 및 다운로드를 처리할 때, 파일 이름에 포함된 특수 문자를 올바르게 인코딩하는 방법을 알아봅니다. 이 글에서는 ASP.NET Core에서 파일 이름에 #
기호가 포함된 경우를 예로 들어 설명합니다.
웹 애플리케이션에서 파일 업로드 및 다운로드를 구현할 때, 파일 이름에 특수 문자가 포함되어 있는 경우 문제가 발생할 수 있습니다. 파일 이름에 #
기호와 같은 특수 문자가 포함되어 있으면, 웹 브라우저는 파일 이름을 올바르게 해석하지 못하여 다운로드가 정상적으로 진행되지 않을 수 있습니다. 이 문제를 해결하기 위해서는 파일 이름에 포함된 특수 문자를 올바르게 인코딩해야 합니다.
문제 상황
ASP.NET Core 웹 애플리케이션에서 파일을 업로드하고 다운로드하는 기능을 구현했습니다. 일반적인 환경에서는 문제가 없었지만, 고객 사이트에서 파일 이름에 #
기호가 포함된 파일을 업로드하고 다운로드할 때 문제가 발생했습니다.
해결 방법
이 문제를 해결하려면, ASP.NET Core의 WebUtility.UrlEncode()
메서드를 사용하여 파일 이름에 포함된 특수 문자를 인코딩해야 합니다. 이렇게 하면 웹 브라우저가 파일 이름을 올바르게 해석하고 다운로드를 시작할 수 있습니다.
다음은 수정된 코드 예제입니다:
using System.Net;
// 나머지 코드 ...
public async Task<IActionResult> FileDown(int id)
{
var model = await _repository.GetByIdAsync(id);
if (model == null)
{
return null;
}
else
{
if (!string.IsNullOrEmpty(model.FileName))
{
byte[] fileBytes = await _fileStorageManager.DownloadAsync(model.FileName, "IncidentsAttachments");
if (fileBytes != null)
{
// DownCount
model.DownCount = model.DownCount + 1;
await _repository.EditAsync(model);
string encodedFileName = WebUtility.UrlEncode(model.FileName);
return File(fileBytes, "application/octet-stream", encodedFileName);
}
else
{
return Redirect("/");
}
}
return Redirect("/");
}
}
위 코드에서 WebUtility.UrlEncode()
메서드를 사용하여 파일 이름에 포함된 특수 문자를 인코딩하고, 이 인코딩된 파일 이름을 File()
메서드의 세 번째 인수로 전달합니다. 이렇게 하면 웹 브라우저에서 파일을 올바르게 다운로드할 수 있습니다.
마무리
웹 애플리케이션에서 파일 업로드 및 다운로드를 처리할 때, 파일 이름에 포함된 특수 문자를 올바르게 인코딩하는 것이 중요합니다. 이 글에서는 ASP.NET Core에서 WebUtility.UrlEncode()
메서드를 사용하여 파일 이름에 포함된 특수 문자를 인코딩하는 방법을 설명했습니다. 이 방법을 사용하면 파일 이름에 #
기호와 같은 특수 문자가 포함된 경우에도 웹 브라우저에서 파일을 올바르게 다운로드할 수 있습니다. 이러한 처리를 통해 웹 애플리케이션의 사용자 경험을 개선할 수 있습니다.