열라 바쁜 가끔 빈곤 곰돌이

XE에서 모듈개발중 파일업로드 기능을 개발해야 할일이 있었습니다.


ajax나 jQuery로 화면내에서 바뀌도록 할수도 있습니다.

이런 부분이야 다른 많은 분들이 예제를 보여주고 XE자체에서도 기능구현이 되어있으니 개발하실 분들은 그걸 참고하시면 될것 같습니다.

저는 전통적인(?) 파일입력을 받고 submit을 하면 다음 페이지에서 처리하는 부분을 간단히 구현하였습니다.


html 파일에서 첨부파일을 입력받기 위해 아래와 같이 대부분 코드를 넣으실겁니다.






그리고 이 form을 받는 액션에서 아래와 같이 코딩만 하면 됩니다.



//module_srl번호를 넘겨주어야 하므로
$module_info = Context::get("module_info");
$module_srl = $module_info->module_srl;
//첨부파일에 대한 정보는 Context::get으로 name을 입력만 해주면 됩니다.
$upfile= Context::get("upfile");
//upload_target_srl을 입력해줍니다. 여기서는 테스트를 위해 고정값을 입력했습니다. 필요한 숫자를 구하시면 되겠죠.
$upload_target_srl = "248";

//XE에서는 file이란 module을 제공하고 있습니다.
$oFileController = getController('file');
$output = $oFileController->insertFile($upfile, $module_srl, $upload_target_srl);

debugPrint($output);


이렇게 해서 output을 찍어보면 


그림과 같이 첨부파일 업로드가 되어 있습니다. 


sid등은 XE에서 자동으로 만들어주므로 신경쓰실 필요없이 간단히 파일첨부가 완성됩니다.

좀더 고급지게(?) 만들고 싶으신분들은 jQuery등으로 만드시면 되고 결국 파일 컨트롤러의 insertFile 함수만 호출하면 되는것입니다.




Comment +0

XE에서 개발하다가 mysql의 프로시저를 호출해야 할 일이 생겼습니다. 

DB에서 약 3천건의 데이터를 단순히 불러다가 다시 저장하는 insert select 작업입니다.

프로시저는 이미 만들어져 있어서 어찌 하나 보니 예전 방식으로 mysql_connect등을 하는 문서들을 보았는데, 

일단 그러면 안됩니다. (PHP7에서 다 없어집니다.)


http://www.slideshare.net/sejin7940/xe-hack

상기 링크의 32번 슬라이드를 참고하여 작업했습니다.

슬라이드에는 결과값을 받아오는 부분이 있어서 길지만,

저는 프로시져를 실행하고 그 결과에 대해서 받아올 생각이 없었으므로, 

간단하게 아래 쿼리로 작업이 가능했습니다.



/* 쿼리 직접 날리기 */

//DB의 인스턴스를 생성합니다.
$oDB = &DB::getInstance();
//쿼리에 해당 인자를 넣습니다.
$query = "call CopyList('".$in_a."', '".$in_b."', '".$src_a."', '".$src_b."')";
//쿼리를 실행합니다.
$exec_query = $oDB->_query($query);


위의 프로시저를 대충 설명하자면, src_a, src_b 를 받아 데이터를 입력할때 in_a, in_b로 값을 치환하여 저장하는 프로시져입니다.


여기서 주의할점은 $in_a 같이 각 변수 앞뒤에 '(홑따옴표) 를 넣어주어야 한다는 겁니다.

그러니까 xml query와 같이 XE는 쿼리에 대해서 변환을 안하고 그대로 DB에다가 쿼리를 넣습니다.

곧 코딩할때 sql 쿼리문을 다 작성해야 한다는 겁니다.


예전처럼 어렵지 않습니다.

사실상 executeQuery 함수전에 쿼리를 변수에 넣어주는 작업이 추가 되었을 뿐입니다.

Comment +0

jungbo.net 정보넷에 XE를 업로드하고 권한설정까지 했는데 계속 403에러가 뜨는 경우가 있습니다. 

내가 뭘 잘못했을가 싶은데 그럴때 아래와 같이 하면 됩니다. 

제로보드 설치한 폴더 아래에 가서 
.htaccess 를 찾는다. ls -al 을 해줘야 숨겨진 파일도 나와요. ^^
안보인다고 없는게 아니란 말입니다. -ㅅ-

vi .htaccess 를 합니다. vi에디터에서 .htaccess를 수정한다는거니 각자 편한 에디터 사용하세요. 
메모장에서 작업해 ftp로 올리실땐 htaccess라고 저장하고 올린후 .을 붙여야합니다.
윈도우에선 앞에 .이 붙은 파일의 생성은 불가합니다.


대충 이해가 되는지 모르겠습니다.

SecFilterEngine Off
SecFilterScanPost Off 

위 두줄은 추가한 것이고 
 그 아래 

RewriteEngine On 이라 된것을 Off로 변경한 것입니다. 

RewriteEngine 을 Off하고 실행해보자. 
그래도 안된다면 위에 SecFilter와 SecFilterScanPost를 끄고 다시 실행해봅니다. 

아마 정보넷의 서버는 Rewrite모드가 지원이 안되는것 같네요.
그럴경우 설치중에 마찬가지로 Rewrite모드를 안쓴다고 해야합니다.
나중에 ?등의 기호로 주소줄이 복잡해 질지 모르지만
이걸로 한두번 개발/디자인해 본 분들이야 알겠지만
그거 나중에 하나도 문제 안되는거 아시지 않습니까?... -ㅅ-;;;

Rewirte모드가 잘 지원되는곳중에 하나가 나야나 호스팅이었던거 같네요.
입맛에 맞게 잘 알아보고 세팅하고 나처럼 호스팅을 이전부터 받아왔다면 그냥 하면 되겠습니다.


이상 오전시간 삽질기였습니다.^^

Comment +0