작성 이력
-----------------------------------------
작성자 : 최용수
작성일 : 2008.01.31
비 고 : 최초 작성.
-----------------------------------------
이전 정리 문서에서 Asp.net에서 이미지 업로드까지 설정이 되었다면..
이제부턴 커스터 마이징이다.
1. 언어 설정
팝업정보나 버튼정보에 뜨는 언어를 설정할 수 있다.
이번 문서에서 살펴 보았던 fckconfig.js를 다시 열어본다.
위와 같이 설정하면 에디터는 fckeditor/editor/lang/ko.js 를 참조하게 된다.
ko.js를 살펴보면 MISS 라는 주석이 붙은 항목이 있는데 ... 간단히 말해 번역 못한 내역이다.
필요하다면 적당히 수정해서 사용하자.
2. 업로드 경로가 꼬인다.
FCKEditor에서 제공하는 빌드된 dll을 이용하면 약간 아리송해지는 경우가 발생하는데
Default 모드로 기본 셋팅되면서 업로드 경로가 서로 꼬이게 된다.
이미지 업로드 다이얼로그에 보면
이미지 정보 | 링크 | 업로드 | 자세히 탭이 생성되어 있다.
업로드는 두군데서 이루어진다.
하나는 이미지 정보 - 서버 보기 버튼을 클릭하면 서버의 [업로드루트]/Image 폴더를 조회하여 보여준다.
하단에 보면 폴더를 생성하는 버튼과 함께 업로드 폼도 존재한다.
다른하나는 당연히 업로드 탭에서 업로드가 가능하다.
문제는 업로드 탭에 기본옵션으로 업로드를 할경우 업로드 루트에 바로 파일이 업로드가 된다.
하지만 서버보기 창에서는 업로드루트/image 폴더에 저장한다. . 적당히 꼬인거다..
이문제는 소스를 직접 수정해야한다.
이게 좀 골때리는게 True/False 값에 따라 업로드 폴더를 생성을 하느냐 안하느냐가 나뉘는 구조로 되어있다.
사실 잘 보면 isQuickUpload 는 결과 Message Alert 창을 띄우는 방식에만 관여하는 것으로 분석된다.
따라서 적당히 수정을 하면 업로드시 업로드 대상 폴더의 생성과 경로지정을 원하는 대로 할 수 있다.
FileBrowser/Uploader.cs 를 보면 isQuickUpload 파라메타 값을 True로 무조건 설정해 놨다.
이것을 수정하면 Message Alert에 영향을 주므로 호출할때 값을 던져주는 것은 포기하고
super class의 함수안에서의 로직을 변경하도록 한다.
자 경로 지정 방식을 수정해 보자.
FCKEditor .Net 라이브러리 소스중 FileBrowser에서 FileWorkerBase.cs 파일을 연다.
고쳐야 할 곳은 두곳! 모두 경로를 셋팅하는 부분이다.
protected void FileUpload( string resourceType, string currentFolder, bool isQuickUpload )
{
....중략...
// Map the virtual path to the local server path.
string sServerDir = this.ServerMapFolder(resourceType, currentFolder, isQuickUpload);
....중략....
string sFileUrl = isQuickUpload ? typeConfig.GetQuickUploadPath() : typeConfig.GetFilesPath() ;
....중략....
this.SendFileUploadResponse( iErrorNumber, isQuickUpload, sFileUrl, sFileName );
}
protected void FileUpload( string resourceType, string currentFolder, bool isQuickUpload )
{
....중략...
// Map the virtual path to the local server path.
string sServerDir = this.ServerMapFolder(resourceType, currentFolder, false);
....중략....
//string sFileUrl = isQuickUpload ? typeConfig.GetQuickUploadPath() : typeConfig.GetFilesPath() ;
string sFileUrl = typeConfig.GetFilesPath() ;
....중략....
this.SendFileUploadResponse( iErrorNumber, isQuickUpload, sFileUrl, sFileName );
}
첫번째 false로 셋팅한 ServerMapFolder 함수는 업로드 대상 폴더를 생성하고(없으면) 파일을 저장할 경로를 리턴한다.
두번째 sFileUrl 은 파일을 업로드하고 [이미지 정보]탭의 링크 부분으로 넘길 파일Url 을 나타낸다.
두곳을 셋팅하면 원하는 폴더 (/UserFiles/Image) 로 파일이 업로드 되고 링크 값도 올바르게 셋팅된다.
3. 버그??
눈에 띄는 버그가 존재하는데, [링크 삽입/변경] 버튼을 클릭하면 링크를 설정하는 다이얼로그가 뜨는데
업로드 탭에서의 파일 업로드시 [Invalid request.] 란 Alert을 띄우면서 업로드가 되지 않는다.
이것도 수정해보자..
수정해야할 파일은 FileBrowser/Uploader.cs 파일이다.
protected override void OnLoad(EventArgs e)
{
...중략...
string sResourceType = Request.QueryString[ "Type" ];
if ( sResourceType == null )
{
//this.SendFileUploadResponse( 1, true, "", "", "Invalid request." );
//return;
//Type이 없을경우 업로드 실패가 아닌 무조건 File 폴더로 이동.
sResourceType = "File";
}
..중략...
}
이렇게 수정이 되면 타입을 알수없는 형태의 업로드 액션에서 파일은 [업로드루트/File] 폴더로 업로드 된다.











ContentsDownload.aspx.cs









