파일 이름에 특수 문자 처리하기: ASP.NET Core에서 파일 업로드 및 다운로드

  • 3 minutes to read

요약: 웹 애플리케이션에서 파일 업로드 및 다운로드를 처리할 때, 파일 이름에 포함된 특수 문자를 올바르게 인코딩하는 방법을 알아봅니다. 이 글에서는 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() 메서드를 사용하여 파일 이름에 포함된 특수 문자를 인코딩하는 방법을 설명했습니다. 이 방법을 사용하면 파일 이름에 # 기호와 같은 특수 문자가 포함된 경우에도 웹 브라우저에서 파일을 올바르게 다운로드할 수 있습니다. 이러한 처리를 통해 웹 애플리케이션의 사용자 경험을 개선할 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com