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

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

다름이 아니라 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);
정성태

... 76  77  78  79  80  81  82  83  [84]  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
375이덕희5/15/200615130SmartClient 강좌를 보고... 엑박이 나옵니다... [2]파일 다운로드1
3745/12/200614025데이타셋을 레코드셋으로 변경하는 방법...... [2]파일 다운로드1
373아폴론5/12/200612835스마트 클라이언트.. 강좌대로 했는데.. 이런 에러가 나네요. [1]파일 다운로드1
372정보문5/11/200613585DHCP를 쓰는 이유 [1]
366임경훈5/8/200613649지정된 웹서버에서 ASP.NET 버전 1.1이 실행되고 있지 않아 ASP.NET 웹 응용 프로그램 또는 웹서비스를 실행할수 없습니다 [2]
365꿈의공장5/8/200613275스마트 클라이언트 사용시 안보이는 현상 [1]
364조준현5/3/2006125092.0 스마트클라이언트에서.. public 메소드등을 스크립트에서 접근하는 방법이..? [2]
363혁이5/2/200615111스마트 클라이언트에 farpoint 컨트롤 올리기 2번째 질문입니다 [1]파일 다운로드1
361혁이4/28/200613730스마트 클라이언트에 FarPointSpread를 올렸는데요. 보이지가 않습니다..음.. [1]
360꿈의공장4/28/200613598스마트클라이언트와 오라클에 연결 [1]
359박호성4/28/200612892ASP.NET에서 COM Object를 사용하려면? [1]
358임동오4/27/200613542ASP -> COM+ Proxy 연결문제입니다. 151초동안 아무응답없습니다. ㅠㅠ
362정성태4/30/200615155    답변글 [답변]: ASP -> COM+ Proxy 연결문제입니다. 151초동안 아무응답없습니다. ㅠㅠ
354노기도4/24/200612791시스템 구성에 대해 의견을 듣고 십습니다.
355정성태4/25/200612849    답변글 [답변]: 시스템 구성에 대해 의견을 듣고 십습니다.
356노기도4/25/200612290        답변글 [답변]: 귀찮게 해드려 죄송스럽지만.
357정성태4/25/200612750            답변글 [답변]: [답변]: 귀찮게 해드려 죄송스럽지만. [1]
352산들바람4/19/200612394이번겨울방학때세도나를 여행하려구하는데요,,,
353정성태4/20/200619935    답변글 [답변]: 이번겨울방학때세도나를 여행하려구하는데요,,,
351오기4/18/200612056aspx [2]
350유지연4/17/200612817smartclient DB connection관련 질문 입니다. [2]파일 다운로드1
349선재빠4/17/200612730object tag를 2개 넣으면 IE가 죽어버리네요. [2]
347박찬용4/13/200612766COM+에 관한 질문입니다. [2]
345선재빠4/11/200613597Winform을 띄울 수 있는 방법이 있나요? [3]
344선재빠4/10/200614712ASP.NET 2.0에서는 VIEWASTEXT 이란 태그옵션을 지원하지 않는군요 [3]
343선재빠4/10/200613994아래와 같은 에러가 나네요.
... 76  77  78  79  80  81  82  83  [84]  85  86  87  88  89  90  ...