'server'에 해당되는 글 2건

  1. 2014.04.30 node.js file uploader (파일 업로더 만들기)
  2. 2014.03.08 우분투에 오라클 클라이언트 인터페이스 설치하기(OCI)

node.js file uploader (파일 업로더 만들기)

|

2014.4월 현재 나와있는 예제들은 express가 버전업되면서 모두 제대로 동작 하지않습니다.


formidable 플러그인을 이용한 방법이 있습니다.


https://github.com/felixge/node-formidable


자세한 내용은 위의 주소에서 확인할수 있습니다.


대략내용은 파일업로드를 위하여 만든 플러그인이라고 합니다.


참고자료 :

http://helloraspberrypi.blogspot.kr/2014/04/upload-file-using-nodejs-with-formidable.html




-소스-

/*

<!-- index.html 파일예 --->

<form method="post" enctype="multipart/form-data" action="http://localhost:8081/file-upload">

    <input type="file" name="thumbnail">

    <input type="submit">

</form>

*/

var theApp = {

    version : '0.2',

    module_path : '',

    port : 8081


};

//command line argument parse

process.argv.forEach(function(val, index, array) {


    //console.log(index + ': ' + val);


    if(val.indexOf('=') > 0) {


        var tokens = val.split('=');


        switch (tokens[0]) {

            case 'port':

                theApp.port = parseInt(tokens[1]);

                break;

            case 'module_path':

                theApp.module_path = tokens[1];

                break;

        }

    }

});


//console.log(theApp);


// run the command to install formidable

// $ npm install formidable

var formidable = require( theApp.module_path +'formidable');

var http = require('http');

var util = require('util');

var fs = require('fs');

var os = require('os');

var UrlParser = require('url');




var app = http.createServer(

    function(req, res){

        switch(req.method){

            case 'GET':

                process_get(req, res);

                break;

            case 'POST':

                process_post(req, res);

                break;

        }

    }

);

app.listen(theApp.port);


console.log('tiny upload server v ' + theApp.version );

console.log('  start port : '+ theApp.port + ', ready ok!');


//Display my IP

(function get_MyIP() {

    var networkInterfaces = os.networkInterfaces();


    for (var interface in networkInterfaces) {


        networkInterfaces[interface].forEach(

            function(details){


                if (details.family=='IPv4'

                    && details.internal==false) {

                    console.log(interface, details.address);

                }

            });

    }

})();


//get 처리 해주기

function process_get(req, res){


    var result = UrlParser.parse(req.url,true);


    switch (result.pathname) {

        case '/test':

            fs.readFile(__dirname + '/index.html',

                function (err, data) {

                    if (err) {

                        res.writeHead(500);

                        return res.end('Error loading index.html');

                    }


                    res.writeHead(200);

                    res.end(data);

                });

            break;

        default :

            break;

    }



}


function process_post(req, res){


    var form = new formidable.IncomingForm();


    form.uploadDir = "./uploads"; //업로드할위치 지정

    form.keepExtensions = true; //확장자 이름 써주기


    form.parse(req, function(err, fields, files) {

        res.writeHead(200, {'content-type': 'text/plain'});


        var resultObj = {

            result : 'ok',

            size : files.thumbnail.size,

            path : files.thumbnail.path,

            name : files.thumbnail.name,

            type : files.thumbnail.type

        }


        res.end( JSON.stringify(resultObj));

        //res.end('File uploaded!');


        console.log(files.thumbnail.path + "Upload completed" );


        //console.log(util.inspect(files));


        //console.log(files.thumbnail.name);



    });


}



And

우분투에 오라클 클라이언트 인터페이스 설치하기(OCI)

|


아래 싸이트에서 basic, sdk 를 다운받는다.


http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html



11.2 버전의 경우는 이름이 다음과 같다.



instantclient-basic-linux.x64-11.2.0.4.0.zip

instantclient-sdk-linux.x64-11.2.0.4.0.zip


unzip 을 이용해서 basic 을 압축풀고 그안에 들어가서 sdk 압축을 푼다.





sudo nano /etc/enviroment(또는 bash.bashrc) 를 열고 맨 밑으로 커서를 이동한다음 아래를 추가 합니다.


(압축을 푼 디랙토리가 /home/gbox3d/work/oracle/instantclient_11_2 라고 가정합니다.)


export OCI_HOME=/home/gbox3d/work/oracle/instantclient_11_2

export OCI_LIB_DIR=$OCI_HOME

export OCI_INCLUDE_DIR=$OCI_HOME/sdk/include

#export OCI_VERSION=12 # Optional. Default is 11.

export NLS_LANG=AMERICAN_AMERICA.UTF8


환경 변수를 시스템에 적용 시켜줍니다.(재부팅하고나면 리셋되므로 다시 해줘야합니다.)

source /etc/enviroment



심볼릭링크를 재정의 해줍니다. 12 버전은  뒷부분이 12.xxx가 됩니다. 그때그때 파일 이름을 보고 바꿔주시면됩니다.

cd $OCI_LIB_DIR
ln -s libclntsh.so.11.1 libclntsh.so
ln -s libocci.so.11.1 libocci.so


추가 라이브러리를 설치합니다.

sudo apt-get install libaio1


동적 라이브러리 캐쉬를 생성합니다.

 echo '/home/gbox3d/work/oracle/instantclient_11_2' | sudo tee -a /etc/ld.so.conf.d/oracle_instant_client.conf

 sudo ldconfig


재부팅해서 설정을 적용시킵니다.

sudo reboot


(주의 : 재부팅후에는 oci 를 사용하려면  source /etc/enviroment 를 다시 해주어야합니다.)


참고 : 맥용 oci 설치하기>>>>


출처 :

https://github.com/joeferner/node-oracle/blob/master/INSTALL.md





'server' 카테고리의 다른 글

node.js file uploader (파일 업로더 만들기)  (0) 2014.04.30
And
prev | 1 | next