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

how to arduino wifi-shield firmware upgrade (for macOS 10.9)

|

1. 맥포트가 설치되어있다고 가정하고 dfu-programmer 를 설치 합니다.


sudo port install dfu-programmer

sudo port selfupdate

sudo port upgrade outdated



2. 사진처럼 와이파이쉴드만 따로 떼어내서 쉴드에 달린 마이크로 USB포트에 usb 캐이블로 직접 피씨에합니다.


빨간색으로 동그라미된 부분이 3번점퍼입니다. 이것을 close 시켜주여야 펌웨어 업데이트 됩니다



아두이노 보드에 붙이지말고 따로 떼낸상태에서 업그래이드합니다.



제손입니다. 손톱이 좀 기네요^^;




2. 깃허브의 아두이노 프로잭트 소스를 다운로드 받습니다.

https://github.com/arduino/Arduino


받은소스의 압축을 푸시고  스크립트폴더로 들어갑니다.

cd [압축파일이름]/hardware/arduino/firmwares/wifishield/scripts


3. 루트권한으로스크립트를 실행시켜줍니다. 


아두이노 가 /Applications/Arduino.app 에 설치 되어있다고 가정하면 다음과 같이 터미널에 입력합니다.

sudo ./ArduinoWifiShield_upgrade.sh  -a /Applications/Arduino.app/Contents/Resources/Java -f all








참고 :

http://arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading

http://forum.arduino.cc/index.php/topic,130124.0.html

http://arduino.cc/en/Hacking/DFUProgramming8U2

And

querySelector 팁 몇가지

|

1. 체크박스나 레디오버튼 선택 항목 얻어내기


item 로 묶었을 경우


input[name=item]:checked


2. document 뿐만 아니라 특정 노드에서도 함수 사용이 가능합니다. 그러므로 좀더 빠른 탐색을 위해서는 document 보다는 근접한 부모노드에서 쿼리 함수를 실행하는 것이 더 좋습니다. document 는 트리의 root 입니다.



And