html 은 일반 채팅과 같은 TCP/IP 프로토콜을 사용하지만, 클라이언에서 서버로 요청을 보내면, 요청에 대한 처리 후 접속을 끊어 버립니다. 그런 이유로 단방향 통신이라하며, 서버에서 원할 때 클라이언트로 메시지를 보낼 방법이 없습니다.

하지만, HTML5에서 웹소켓 개념이 추가되며, 이런 문제를 해결하였습니다. node.js에서 잘 알려진 웹소켓 지원 모듈은 ws 와 socket.io 입니다. 둘다 websocket을 이용할 수 있다는 점은 같지만, 특징이 뚜렸하기 때문에, 사용목적이 달라질 수 있습니다.

ws : 표준 웹소켓을 구현하였습니다. 그래서, 웹 브라우저, 게임을 포함한 앱, 윈도우 프로그램 모든 곳에서 사용할 수 있습니다. 하지만, 구형 웹브라우저나, 웹소켓이 모두 구현되지 않은 곳에서는 잘 동작하지 않을 수 있습니다.

socket.io : 브라우저만을 위한 특화된 방식으로 모듈이 구현되어 있습니다. 그래서 표준 웹소켓이 아니므로, 웹에서만 사용이 가능합니다. 하지만, 웹소켓을 지원하지 않는 브라우저는 polling을 이용해 연결합니다. 즉, 99.99% 브라우저에서 동작합니다.

이 문서는 socket.io의 내용만을 답고 있습니다.

 

[공식문서]

websocket org : https://www.websocket.org .
socket io : http://socket.io .

 

[참고문서]

express 구축 : https://nicgoon.tistory.com/234 .
javascript 웹 소켓 클라이언트 : https://nicgoon.tistory.com/227 .

 

 

1. express 구축.

이 부분은 따로 설명하지 않습니다. ws 사용법을 집중적으로 다루기 위함 입니다. express를 사용해 본 경험이 없으시다면, 참고 문서의 express 구축 ( 링크 ) 페이지를 따라 구축해 주시면 될 것 같습니다.

 

 

2. socek.io를 이용한 route 구축.

- socket.io 모듈을 설치 합니다.

$ npm i socket.io

 

- 웹소켓을 구현 합니다.

그리고 웹소켓을 처리할 모듈파일 webSocket.js 을 적당한 위치에 만들어 줍니다. 모듈 파일을 생성했다면, 아래와 같이 소스를 만들어 줍니다. (각 소스에 대한 설명은 주석을 달아 두었습니다.). socket.io의 특징은 connect, disconnect, error외에 이벤트를 직접 정의 한다는 것 입니다. 즉 어디로 받을 것인지 선택할 수 있으며, 아래소스에서는 ms라는 이벤트를 추가하였습니다.

const SocketIO = require("socket.io");

module.exports = function ( _server ) {

    // 소켓 io를 처리할 객체를 생성합니다.
    const io = SocketIO( _server, {path: '/socket.io'} );

    // 접속 처리 및 해당 클라이언트에 대한 모든 처리를 합니다.
    io.on( "connection", function( socket ){

        // 접속한 정보를 표시합니다.
        const req = socket.request;
        const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
        console.log( ip + "의 새로운 유저가 접속하였습니다." );

        // 접속이 끊어진 경우 처리를 하는 콜백 입니다.
        socket.on( "disconnect", function(  ){
            console.log("접속을 해제 하였습니다.");
        });

        // 오류가 난 경우 처리를 하는 콜백 입니다.
        socket.on( "error", function( error ){
            console.log( "error:" + error );
        });

        // 일반 메시지를 받은 경우의 처리 입니다. (ms 라는 이벤트로 클라이언트가 보낼 때 마다 이 메소드가 호출 됩니다.)
        socket.on( "ms", function( data ){

            // 클라이언트로 부터 받은 메시지를 표시합니다.
            console.log( "클라이언트로 부터 받은 메시지 : " + data );

            // 클라이언트에 구현된 echo 이벤트로 메시지를 보내어 줍니다.
            socket.emit( "echo", data );

        });
        
    });

}

 

- 구현한 웹소켓을 연결합니다.

그런다음 모듈을 http 서버에 연결해 줍니다. (express 같은 경우 listen을 통해 만들어진 서버, http의 경우 createServer 메소드로 만들어진 서버). 위에 링크된 express 구축을 따라했다면, /bin/www 파일속에 server 객체가 정의 되어 있습니다. 적당한 위치에 아래와 같이 웹소켓을 연결하도록 합니다.

const webSocket = require( "../routes/webSocket" );
webSocket( server );

 

 

3. 브라우저를 통해 웹소켓 서버에 접속해 보기.

- 지금까지 구현한 서버 실행.

$ npm start

 

- 클라이언트 만들고 호출 하기.

테스트할 웹브라우저에 아래 소스를 추가합니다. 웹에서 우리가 만든적 없는 js 파일 "/socket.io/socket.io.js" 파일을 추가하는데, express 서버에 socket.io를 구현하였다면, 자동으로 추가되어 다운로드 받을 수 있습니다. 그리고, 서버와 마찬가지로, 받는 이벤트명을 마음대로 정할 수 있습니다. 특징은 접속을 따로 하거나, 연결을 따로 하지 않습니다. 끊어지면 바로 자동으로 새 접속을 시도합니다. (언제나 연결을 유지 합니다.)

<!DOCTYPE html>
<meta charset="utf-8" />
<title>WebSocket Test</title>

<script src="/socket.io/socket.io.js"></script>
<script>

  // 웹소켓 서버를 설정합니다.
  var socket = io.connect( "http://localhost:3000" , {path: "/socket.io"} );
  socket.on( 'echo', function( data ){

    console.log( data );
    writeToScreen( "받은메시지:" + data )


  });

  // 서버로 데이터를 보내기 위한 메소드 입니다.
  function sendMessage( )
  {
    // 서버에 구현된 ms 이벤트로 메시지를 보냅니다.
    mss = document.getElementById( "message" ).value;
    socket.emit( "ms", mss );
    
  }
  // 받은 메시지를 출력합니다.
  function writeToScreen(message)
  {
    var pre = document.createElement("p");
    pre.style.wordWrap = "break-word";
    pre.innerHTML = message;
    output.appendChild(pre);
  }

</script>


<h2>소켓 io 동작을 테스트 하기 위한 node js 입니다.</h2>


<form>

    <input id="message" /> <button type="button" onclick="sendMessage();" >전송</button><br>

</form>


<div id="output"></div>

 

- 브라우저 호출.

브라우저에서 위의 소스를 실행하면, node.js에 아래와 같은 메시지를 볼 수 있습니다. (자동으로 바로연결됨)

 

- 메시지 보내기.

브라우저에서 적당한 메시지를 입력하고, 전송 버튼을 눌러 봅니다.

 

그러면 아래와 같이, 메시지를 되돌려 받았을 것 입니다.

 

서버의 상태를 보면, 아래와 같이 클라이언트가 접속했음을 확인할 수 있습니다.

 

그리고 브라우저를 닫으면, 서버에서 접속이 끊어진 메시지 또한 확인할 수 있습니다.

 

 

 

 

 

 

 

 

Posted by 창업닉군
,

그간의 html 통신은 요청에 대한 처리를 한 후 응답을 돌려주는 방식으로 동작했습니다. 우리가 흔히 챗팅 프로그램에서 사용하는 포로토콜인 TCP/IP를 사용했지만, [연결->요청에대한처리->응답->연결끊기] 사이클을 반복하며, 연결을 계속 끊기 때문에, 클라이언트의 요청은 언제든지 전달 할 수 있지만, 서버의 메시지는 클라이언트로 전달할 수 없었습니다.

그래서 나온 것이 웹소켓 이며, 서버의 구현도 간단하며 (직접 구현해도 될 정도), 클라이언트 또한 매우 간결하며, 요즘은 대부분은 웹브라우저에서 지원을 해 줍니다. 이 페이지는 ws 모듈을 이용해 웹브라우저와 node.js간의 간단한 통신을 구현한 예제를 설명하고 있습니다. 간단하지만, 이를 바탕으로 원하는 채팅 모듈을 구현할 수 있으리라 생각이 됩니다.

본 문서를 보려면, node.js 에서 express 서버의 구축 과정을 알고 있어야 합니다. (물론 아래에 관련 링크를 제공합니다.)

 

 

[공식문서]

websocket org :  https://www.websocket.org .
ws : http://www.npmjs.com/package/ws .

 

[참고문서]

express 구축 : https://nicgoon.tistory.com/234 .
javascript 웹소켓 클라이언트 : https://nicgoon.tistory.com/227 .

 

 

 

1. express 구축.

이 부분은 따로 설명하지 않습니다. ws 사용법을 집중적으로 다루기 위함 입니다. express를 사용해 본 경험이 없으시다면, 참고 문서의 express 구축 ( 링크 ) 페이지를 따라 구축해 주시면 될 것 같습니다.

 

 

 

2. ws를 이용한 route구축.

ws 모듈을 설치 합니다.

$ npm i ws

 

그리고 웹 소켓 통신을 처리할 모듈을 구현할 webSocket.js 파일을 만들어 줍니다.

모듈파일을 생성했다면, 아래와 같이 소스를 만들어 줍니다. (각 소스에 대한 설명은 주석을 달아 두었습니다.)

const wsModlue = require( "ws" );


module.exports = function( _server )
{


    // 웹소켓 서버를 생성합니다.
    const wss = new wsModlue.Server( {server:_server} );

    // 클리이언트가 접속했을 때 처리하는 이벤트 메소드를 연결합니다.
    wss.on( 'connection', function( ws, req ){

        // 사용자의 ip를 파악합니다.
        let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
        console.log( ip + "아이피의 클라이언트로 부터 접속 요청이 있었습니다." );

        // 메시지를 받은 경우 호출되는 이벤트 메소드 입니다.
        ws.on('message', function( message ){

            // 받은 메시지를 출력합니다.
            console.log( ip + "로 부터 받은 메시지 : " + message );

            // 클라이언트에 받은 메시지를 그대로 보내, 통신이 잘되고 있는지 확인합니다.
            ws.send( "echo:" + message );

        });

        // 오류가 발생한 경우 호출되는 이벤트 메소드 입니다.
        ws.on('error', function(error){
            console.log( ip + "클라이언트와 연결중 오류 발생:" + error );
        })

        // 접속이 종료되면, 호출되는 이벤트 메소드 입니다.
        ws.on('close', function(){
            console.log( ip + "클라이언트와 접속이 끊어 졌습니다." );
        })


    });


}

 

그런 다음 모듈을 http 서버에 연결해 줍니다. (express같은 경우 listen을 통해 만들어진 서버, http의 경우 createServer 메소드로 만들어진 서버). 위에 링크된  express 구축을 따라 했다면, /bin/www 파일 속에 server 객체가 정의 되어 있습니다. 적당한 위치에 아래와 같이 웹소켓을 연결하도록 합니다.

const webSocket = require("../routes/webSocket");
webSocket( server );

 

웹소켓은 익스프레스 서버와 port를 공유하므로, 따로 포트를 지정할 필요가 없습니다.

 

 

3. 브라우저를 통해 웹소켓 서버에 접속해 보기.

브라우저에서 웹소켓 이용 방법은 위의 참고 문서 [javascript 웹소켓 클라이언트 (링크)] 문서를 읽어 주세요. 이 페이지는 node js를 통한 웹소켓 서버 구축만 집중적으로 설명을 합니다.

웹소켓을 테스트하기 위한 웹 브라우저는 따로 만들지 websocket공식 사이트에 구현된 챗팅 클라이언트 페이지를 이용합니다. 웹소켓 기능을 구현할 때 일단 websocket 공식 사이트에 구헌된 챗팅 클라이언트 페이지를 이용해 구축하고, 클라이언트 부분은 이렇게 완성된 웹소켓 서버와 연결하는 식으로 구축합니다. 2가지를 한 꺼번에 구축하면, 오류 발생시 어느쪽이 문제인지 알 기 힘듭니다. 이렇게 단계별로 만든다면, 약간은 쉽게 구현이 가능합니다.

먼저 지금 까지 구현 한 서버를 동작 시켜 줍니다.

$ npm start

 

그 다음, 클라이언트로 이용할 https://www.websocket.org/echo.html 페이지로 접속합니다. 그러면 아래와 같은 화면을 볼 수 있습니다. 여기서, 로케이션 창에 주소를 입력하고 connect 버튼을 누릅니다. 이라고 입력 합니다.  위의 참고 문서 [express 구축] 을 보고 서버를 구축했다면, 주소는 ws://localhost:3000 이 됩니다.

그럼 아래와 같이 접속이 됩니다.

서버 또한 클라이언트로 부터 연결이 있었음을 알 수 있는 로그를 표시합니다.

 

다음 웹브라우저에서 서버로 메시지를 보내 보겠습니다. Message 항목에 적당한 메시지를 입력하고, Send 버튼을 누릅니다.

그럼 메시지가 가고, 서버로 부터 보낸 내용을 그대로 보낸 메아리를 받을 수 있습니다.

서버측에서도 클라이언트가 보낸 메시지의 로그를 확인할 수 있습니다.

 

마지막으로 접속을 끊어 보겠습니다. Disconnect 버튼을 누릅니다.

그리고 나면 접속이 끊어졌음을 로그로 확인할 수 있습니다.

 

물론 서버측에서도 클라이언트와 접속이 끊어졌음을 확인하는 로그를 볼 수 있습니다.

 

 

저는 웹소켓동작이 잘되었습니다. 여러분들도 잘 동작이 되었으면 좋겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 창업닉군
,

예전 multer를 이용한 파일 업로드 구현을 블로그에 게시했는데, 여러개의 필드도 업로드할 일이 있어, 사용해 보는 김에, 블로그에 남깁니다. 예전 페이지에 수정을 할 까도 생각해 봤지만, 따로 두는 것이 좋을 것 같아. (목적 별로 찾을 수 있도록) 블로그를 하나 더 남깁니다.

node js에 express 를 설치하고, multer를 이용해 업로드 처리를 하였습니다.

 

1. multer 설치.

$ npm i multer

 

2. multer 로드.

multer등 필요한 모듈을 아래와 같이 인스턴스화 해 줍니다.

var multer = require('multer');
var path = require('path');

 

 

3. multer를 초기화 합니다.

아래 코드를 참고해 multer를 생성합니다. 별 내용은 없고, 파일명을 지정하는 메소드등, 옵션 정도 설정해 초기화 합니다.
여기서는 업로드 폴더를 upload로 지정했으므로, express 서버를 시작하는 소스가 담긴 폴더에 upload 폴더를 생성해야 합니다.
대체로 "/upload" 폴더가 됩니다.

var multerNo = 1;
const uploader = multer({

  // 저장 위치 결정.
  storage: multer.diskStorage({

    destination( req, file, cb ){
      cb( null, "upload/" );
    },

    filename( req, file, cb )
    {

      const ext = path.extname( file.originalname );
      cb( null, path.basename( file.originalname, ext ) + "_" + multerNo++ + "_" + new Date().valueOf() + ext )

    }

  })


  // 저장 용량설정.
  , limit: { filesize: 5 * 1024 * 1024 }

});

 

 

4. 업로드 라우터 설정.

app.post( '/img', uploader.fields( [{name:"img_0"}, {name:"img_1"}, {name:"img_2"}, {name:"img_3"}, {name:"img_4"}] ), function( req, res, next ) {

  res.json( req.files );
  console.log( req.files );

});

 

 

5. 업로드하는 파일 폼의 html은 다음과 같습니다.

<html>

    <head>
        <title>파일 업로드 테스트를 합니다.</title>
    </head>

    <body>

        <form action="/img" method="POST" enctype="multipart/form-data">

            이미지 0 : <input type="file" name="img_0" /><br>
            이미지 1 : <input type="file" name="img_1" /><br>
            이미지 2 : <input type="file" name="img_2" /><br>
            이미지 3 : <input type="file" name="img_3" /><br>
            이미지 4 : <input type="file" name="img_4" /><br>


            <input type="submit" value="보내기" />


        </form>

    </body>

</html>

 

 

 

 

 

 

 

 

 

 

'Node.js' 카테고리의 다른 글

node.js ws 를 이용한 웹소켓 구현.  (6) 2019.06.02
Express-generator로 express 간단히 셋팅하기.  (0) 2019.06.02
aws node js SMS 보내기  (0) 2019.05.26
node js 파일 업로드 multer  (0) 2019.05.24
node.js nodemailer gmail  (0) 2019.05.24
Posted by 창업닉군
,

aws node js SMS 보내기

Node.js 2019. 5. 26. 02:37

aws를 통해 문자를 보내는 기능은 꽤나 복잡한 절차를 따릅니다. 문서는 잘 되어 있지만 선행해야할 작업이 많습니다. 구글 클라우드든 aws 든 사용방법은 매우 간단합니다. 하지만 설정을 하는데 매우 복잡합니다. 그리고 문자를 보내는 것은 무료는 아닙니다. 건당 대략 1~20원 가량 소요됩니다. 테스트를 위해 1달러 쯤 사용할 각오는 해야 하실 것 같습니다.

그럼 이제 부터 한 단계씩 차근 찬근 진행해 보도록 하겠습니다.

 

공식문서들:

인증자격받기 : https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/getting-your-credentials.html .
인증자격증명로드 : https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html .
aws 리전 : https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sms_supported-countries.html .
기본 설정 지정 : https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sms_preferences.html .
Amazon SNS를 통한 SMS 메시지 전송 : https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/sns-examples-sending-sms.html .

 

1. aws 계정만들기.

여기서 계정 만드는 것에 대해서는 다루지 않고, 외국에서 결제되는 신용카드는 꼭 필요합니다. 잘 못하면 계정이 잘 만들어 지지 않을 수 있지만, 같은 카드로 계정을 여러개 만드는 것은 가능하기 때문에, 크게 걱정하실 필요는 없습니다.

 

2. 액세스 키 만들기

누구의 권한으로 SMS를 보낼 것인지 확인해야 하므로, 액세스 키를 만들어 권한 설정을 해야 합니다. 하는 방법은 클릭 몇 번으로 가능합니다. 이 작업은 공식 문서 중 인증 자격 받기를 참고 합니다.

먼저 AWS Management Console에 접근합니다. ( 링크 ). 로그인 되어 있다면, 아래와 같은 페이지가 표시될 것 입니다. 이 페이지에서 IAM을 클릭해 주도록 합니다.

Identity and Access Management 소개 페이지가 호출되면, 사용자를 선택해 줍니다.

사용자 페이지에서, 사용자를 추가할 수도 있고, 기존의 사용자를 선택할수 도 있습니다. 여기에 꼭 1명의 사용자는 존재하는 데 루트 사용자 입니다. 저는 사용자를 추가하지 않고 aws 가입시 생성된 루트 사용자를 선택했습니다. 여러분은 상황에 맞게 적당한 사용자를 클릭해 주세요.

요약 페이지가 호출되면, 보안자격증명 > 액세스 키 만들기를 차례로 눌러 줍니다.

그럼 에세스 키가 자동으로 만들어 지는데, 비밀 액세스 키는 단 1회만 확인 가능 하므로, 잊지 말고 적어두고, .csv 파일 다운로드를 눌러 다운로드 받아 주도록 합니다.

 

3. 공유 인증 파일에서 node.js에 인증 자격 증명 로드.

에세스 키를 공유인증 자격에 넣는 방법을 설정합니다. 공식 문서는, [인증자격증명로드] 을 참고하면 됩니다.

공유인증 자격 증명이 있어야할 위치는 윈도우는 C:\Users\USER_NAME\.aws\credentials 맥 또는 리눅스, 유닉스는 ~/.aws/credentials 입니다. 유닉스 시스템에서 . 문자로 시작하는 파일은 감춰 지기 때문에, 주의해야 하며, ~ 디렉터리는 로그인한 유저의 홈디렉터리를 의미합니다.

그리고 앞서 받았던 엑스키와 시크릿 액세스 키를 credentials 파일에 작성합니다.

[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>

 

4. SNS 콜솔 열기.

SNS 콘솔을 열려면, (링크) 를 눌러도 바로 열 수 있지만, 아래와 같이 열 수도 있습니다. 콘솔 페이지에서, Simple Notification Service를 선택해 주도록 합니다.

Amazon Simple Notification Service 페이지가 열리면 개요로 시작을 선택해 콘솔로 들어 갑니다.

그리고, 대시 보드 페이지가 표시되면, 문자 보내기가 없을 것 입니다. (있을 수도 있음). 이유는 몇몇 리전만 지원을 하기 때문입니다. 리전을 한국과 가까운 일본으로 선택합니다.

그럼 문자 메시지(SMS) 항목이 나타날 텐데 눌러서 문자 메시지 대쉬 보드가 표시 될 수 있도록 합니다.

 

5. 기본 설정 지정

여기 까지 왔다면, 문자 메시지 기본 설정의 편집 버튼을 눌러 주도록 합니다.

여기서 주요한 사항은 메시지 유형과 지출 한도 입니다. 일단 트랜잭션이 고급진 보내기 인데, 저는 테스트용도 이므로 이렇게 했습니다. 여러분은 상황에 맞게 해 주시기 바랍니다.

모두 설정했다면 변경 사항 저장 버튼을 눌러 주도록 합니다.

 

6. 권한 설정.

SMS을 보낼 때, 계정에 권한을 주지 않으면, not authorized to perform: SNS:Publish 라는 오류를 만납니다. 권한만 추가해 주면 간단히 해결 되므로, 권한을 주도록 합니다.

콘솔에서 IAM 을 선택합니다. (위치는 다를 수 있습니다. 자주 사용하는 항목이 위에 표시되도록 되어 있습니다.).

사용자 탭을 눌러 위에서, 엑세스 키를 만들었던 유저를 선택해 줍니다.

여기서 권한 추가 버튼을 눌러 줍니다.

권한 추가 창이 뜨면 기존 정책 직접 연결을 선택합니다.

권한 부여 창이 뜨면 정책 필터에 sns 를 입력해 줍니다. 그럼 관련 권한 3개가 뜨는데 모두 선택해 줍니다. (하나씩 권한을 주고, 문자를 보내봤는데, 모두 오류가 났습니다. 아마 3개 다 필요한 듯 합니다.) 그 다음 검토 버튼을 눌러 줍니다.

다음 창이 뜨면 권한 추가 버튼을 눌러 권한을 추가하도록 합니다.

 

7. node js 파일 생성 및  aws-sdk 설치.

여기서 부터는 공식 문서, [Amazon SNS를 통한 SMS 메시지 전송] 을 참고해 주시면되겠습니다.

적당한 위치에 node.js를 위한 send_message.js 파일을 만들어 줍니다. 그리고, 아래와 같이 aws-sdk를 설치합니다.

$ npm i aws-sdk

 

 

8. 문자 보내기.

드디어 대망의 문자 보내기 입니다. 공식 문서의 가장 마지막의 문자 보내기를 참고해서 보내면 됩니다. (공식 문서의 옵트인 확인은, 문자를 받지 않겠다고 해당 스마트폰 사용자가 설정한 경우 입니다.)

소스는 아래와 같고, params 의 Message 항목에 보낼 메시지를 넣고, PhoneNumber에 보내는 전화 번호를 넣으면 됩니다. 주의할 점은, 전화번호는 국제 전화 번오를 넣어야 합니다. 한국같은 경우, 전화번호가 010-9999-8888 이라면, +8201099998888을 입력해야 합니다.

AWS.config.update 의 region 값은 이 문서 상단의 공식문서 [aws 리전] 을 참고해 넣으시면 되며, 이 문서는 일본에 설정하였으므로, 일본으로 넣어 테스트 했습니다.

// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set region
AWS.config.update({region: 'REGION'});

// Create publish parameters
var params = {
  Message: 'TEXT_MESSAGE', /* required */
  PhoneNumber: 'E.164_PHONE_NUMBER',
};

// Create promise and SNS service object
var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();

// Handle promise's fulfilled/rejected states
publishTextPromise.then(
  function(data) {
    console.log("MessageID is " + data.MessageId);
  }).catch(
    function(err) {
    console.error(err, err.stack);
  });

저는 이 소스를 이용해 값을 알맞게 고쳐 제 폰으로 문자를 보내어 보니 아주 잘 왔습니다. 여러분은 어떠신가요?

'Node.js' 카테고리의 다른 글

Express-generator로 express 간단히 셋팅하기.  (0) 2019.06.02
node js 파일 업로드 multer (field)  (0) 2019.06.01
node js 파일 업로드 multer  (0) 2019.05.24
node.js nodemailer gmail  (0) 2019.05.24
node js OAuth 2.0 Login  (0) 2019.04.16
Posted by 창업닉군
,

node.js로 파일을 업로드 하려면 multer 라는 모듈을 다운로드 받아 사용하면 됩니다.

1. multer 설치.

$ npm i multer

 

2. multer 로드.

multer를 아래와 같이 모듈 로드해 줍니다. path는 파일 경로를 만들어 줍니다.

var multer = require('multer');
var path = require('path');

 

3. multer 초기화

아래 코드를 참고해 multer를 생성합니다. 별 내용은 없고, 저장 위치와, 파일명을 지정하는 메소드, 옵션 정도 설정해 초기화 합니다.

  const uploader = multer({

    // 저장 위치 설정.
    storage: multer.diskStorage({
      
      destination(req, file, cb){
        cb(null, "upload/");
      },

      filename( req, file, cb )
      {
        const ext = path.extname( file.originalname );
        cb( null, path.basename( file.originalname, ext ) + new Date().valueOf() + ext );
      }

    })


    // 저장 용량설정.
    , limits: { filesize: 5 * 1024 * 1024 }

  });

 

4. 업로드 라우터 설정.

위에서 설정했던 multer를 라우터에 설정하는 것 인데, single('img')는 html에서 업로드하는 필드중 img 가 파일을 업로드하는 것 임을 알려 줍니다. single은 하나의 파일만 업로드했음을 설정하는 메소드 입니다.

  app.post( '/img', uploader.single('img'), function( req, res, next ){

    // 파일 정보.
    console.log( req.file );

    // POST의 다른 정보.
    res.json( req.body );

  });

 

5. 업로드하는 파일 폼의 html은 다음과 같습니다.

<html>

    <head>
        <title>이미지 업로드</title>
    </head>


    <body>

        <form action="/img" method="POST" enctype="multipart/form-data" name="file_F" id="file_F" >

            <input type="file" name="img" />
            <input type="text" name="kkon" />

            <input type="submit" value="보내기" />

        </form>

    </body>


</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Node.js' 카테고리의 다른 글

node js 파일 업로드 multer (field)  (0) 2019.06.01
aws node js SMS 보내기  (0) 2019.05.26
node.js nodemailer gmail  (0) 2019.05.24
node js OAuth 2.0 Login  (0) 2019.04.16
node.js를 이용한 iOS Push 구현하기 (requests to APNs)  (0) 2019.04.14
Posted by 창업닉군
,

node.js nodemailer gmail

Node.js 2019. 5. 24. 03:19

노드 메일러로 gmail 보내는 내용입니다. 웹상에 많이 있어 그냥 제가 해보고 되었던 웹페이지의 주소를 링크해 둡니다.

https://jizard.tistory.com/150

'Node.js' 카테고리의 다른 글

aws node js SMS 보내기  (0) 2019.05.26
node js 파일 업로드 multer  (0) 2019.05.24
node js OAuth 2.0 Login  (0) 2019.04.16
node.js를 이용한 iOS Push 구현하기 (requests to APNs)  (0) 2019.04.14
Android 결제 서버 개발  (0) 2019.04.09
Posted by 창업닉군
,