Microsoft MVP성태의 닷넷 이야기
첨부 파일 Download시 한글 Name [링크 복사], [링크+제목 복사],
조회: 23425
글쓴 사람
장근배
홈페이지
첨부 파일
 

안녕하세요,,
여기에 질문을 해도 되는지 모르겠지만 일단 질문을 해 봅니다. ^^;

다름이 아니라 ASPX.NET(2.0)으로 게시판 비슷하게 구성을 하여 Service를 하고 있는데,
첨부 파일을 Download를 하게 되면 file Name이 깨져 나옵니다.
파일을 open, 저장, 취소창에서는 파일 Name이 정상적으로 나오나
해당 파일을 Open을 하게 되면 파일 Name에 '%'가 들어가 있어 이를
저장시 file Name을 다 수정을 해 줘야 합니다.
(저장을 하면 정상적으로 file Name으로 저장이 됩니다)
예를 들어 엑셀 파일 '강아지 List.xls'라고 하면
Open을 하면 Excel의 file Name이 '%ea%b0%95%ec%95%84%ec%a7%80+List.xls' 라고 Display됩니다.
파일을 실제로 download하는 부분은 다음과 같습니다.

Test_FileDown.aspx code
====================================================================================
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test_FileDown.aspx.cs" Inherits="Web_Test.Test_FileDown" %>
=====================================================================================

Test_FileDown.aspx.cs code
====================================================================================
protected void Page_Load(object sender, EventArgs e)
{            
    string _fileName = string.Empty;
    string _filePath = string.Empty;

    int fileNamePoint = 0;
    try
    {
        _filePath = Server.UrlEncode(@"C:\temp\강아지 List.xls");
        _fileName = Server.UrlEncode(@"강아지 List.xls");

        if (null != _filePath && string.Empty != _filePath)
        {
            _filePath = Server.UrlDecode(_filePath);

            if (null == _fileName)
            {
                fileNamePoint = _filePath.Split('\\').Length;
                _fileName = _filePath.Split('\\')[fileNamePoint - 1];
            }
            else
            {
                _fileName = Server.UrlDecode(_fileName);
            }                

            Response.Clear();
            Response.ContentType = "application/Unknown";                    
            Response.AddHeader("Content-Disposition", "attachment;filename=\"" + Server.UrlPathEncode(_fileName).Replace("+", "%20") + "\"");                    
            Response.WriteFile(_filePath);
            Response.Flush();                    
        }
        Response.End();
    }
    catch (Exception ex)
    {
        Response.Clear();
        Response.Write("<script language='javascript'> " +
            " alert('첨부 파일을 다운로드중 오류가 발생하였습니다!'); " +
            " opener = self; " +
            " self.close(); " +
            "</script>");
        Response.End();
    }
}
====================================================================================

web.config code
==================================================================
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
==================================================================

인터넷에서 검색을 해 보아도 결과는 --;;
방법이 있을까요??








[최초 등록일: ]
[최종 수정일: 11/30/2009]


비밀번호

댓글 작성자
 



2009-12-02 10시33분
글쎄요. 제가 보기에도 별로 문제될 것이 없어보이는데요. 제 파일 다운로드 코드 역시 위와 별반 다르지 않습니다. 예를 들어, 이 게시판의 834번 글에 첨부된 파일을 다운로드 받아보세요. (그 파일명이 한글입니다.)

참고로, 제 게시판의 소스 코드는 다음과 같습니다.

Response.Clear();
      Response.ContentType = FileExtension.GetContentType(orgFileName); // "application/octet-stream"
      string encodedFilename = HttpContext.Current.Server.UrlEncode(orgFileName); // orgFileName = "테스트"
      Response.AddHeader("Content-Disposition", "attachment; filename=" + encodedFilename);

      Response.TransmitFile(fullPath);

      Response.End();
kevin25
2011-06-24 05시42분
Response.AddHeader("content-disposition"........Unicode...
; http://forums.asp.net/t/1332340.aspx/1

따라서, 아래와 같이 처리해 보십시오. ^^

string txt = HttpUtility.UrlEncode(fileItem.FileName, System.Text.Encoding.UTF8);
정성태

... 61  62  63  64  65  66  67  68  69  70  71  72  73  [74]  75  ...
NoWriterDateCnt.TitleFile(s)
693장근배8/29/200715593매핑 구간이 열려 있습니다 [3]
692채영사랑8/29/200715041<질문> Ms stress tool 로 부하테스트중. [2]
690한귀순8/28/200715897ClickOnce 배포 추가질문 [4]
689clev...8/27/200715039SmartClient에서도 Exe COM과 같이 여러곳에서 변수 공유가 가능한가요? [2]
688한귀순8/24/200717673ClickOnce 배포 [1]
686이상욱8/21/200716483[질문] VS.NET 2008 - WCF 를 위한 디버깅 환경 개선 테스트 중에
687정성태8/21/200714588    답변글 [답변]: [질문] VS.NET 2008 - WCF 를 위한 디버깅 환경 개선 테스트 중에
685김동진8/19/200717050Vista에서 WSDL관련 IIs7세팅 질문입니다. [4]
683조스7/31/200716400스마트 클라이언트에서 다른 어셈블리(.NET component) 사용시 에러 [1]
682정해봉7/30/200717375비스타에서 CAS설정하기... 소스 첨부 [1]파일 다운로드1
684정해봉8/14/200718251    답변글 [답변]: 비스타에서 CAS설정하기... 소스 첨부 [3]
681박희진7/27/200715901caspol로 설정된 권한집합 웹에서 읽어올 수 있나요?? [1]
680창민이7/27/200716735COM+등록시 에러 부분 때문에.. [2]
678정해봉7/24/200715652비스타에서 CAS 설정하기... [1]
677첫사랑7/24/200714749SSL에 관한 질문입니다.
679정성태7/26/200715373    답변글 [답변]: SSL에 관한 질문입니다. [1]
676kiuk7/11/200715757웹폐이지상의 이미지 상태 저장을 하고싶습니다. [1]
675안연준7/6/200716270안녕하세요 ^^ [1]
674황태욱7/5/200718400utf-8 환경에서 파라미터 값에 한글이 있을 경우 깨지는 현상이.. [1]
672땡초7/4/200717492Remoting 객체를 호출하는 순간 Timer 의 Elapsed 이벤트가 멈추는 현상 [2]
670조성택7/3/200716900.Net에서 Timer클래스.. [1]
667홍석헌6/29/200716090[c#] 윈도우 활성화에 관한 질문
669정성태6/30/200716301    답변글 [답변]: [c#] 윈도우 활성화에 관한 질문
666오야6/25/200715395System.Transactions 에서 트랜잭션 실패를 체크하는 방법 [1]
665김성태6/20/200714899안녕하세요^^
668정성태6/30/200716032    답변글 [답변]: 안녕하세요^^
... 61  62  63  64  65  66  67  68  69  70  71  72  73  [74]  75  ...