출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]
const requestIp = require('request-ip');
$ npm install request-ip
let Ip = requestIp.getClientIp(req)

 

- 끗 -

 

----------- 더 간단하게는 

const ip = req.headers['x-forwarded-for'] ||  req.connection.remoteAddress;

그리고 만약 로컬에서 ::1로 사용자 IP가 출력되는 경우가 있다. ::1은 IpV6에서 로컬 호스트를 의미한다. 그래서 express 서버를 생성할 때 IPV4를 사용하도록 설정하면 된다.

 


 ex) localhost는 ::1로 들어오고 다른건 ::fff:000.00.00.0. 이런식..

 

if (params.dlIp.substr(0, 7) == "::ffff:") {
    params.dlIp = params.dlIp.substr(7)
}

 

 

 

 

뭔가 이렇게 바로 다운로드 시키고 싶었음

router.route('/sdk/download').get(async (req, res)=> {
    logger.info('request => [get] /sdk/download');
    
    // 필요한 작업 솰라솰라하고나서   
    
    // 다운로드
    let filepath = '파일경로';
    res.download(filepath)
});

 

그냥 이게 끝이었다 ^_^

 

 

라고 생각했는데 뭔가 구리게 파일이 떨어짐..

파일명 같은게 32ru3ifeiosfhsiodf923이런식으로;

 

const path = require('path');
 let filepath = '파일경로 + 파일명' // ex) /dsdfdsf/dfdfd/dfdf/dd.zip
 res.download(filePath, encodeURIComponent(path.basename(filePath)));

 

이렇게 해주면 파일명도 깰끔~~

'nodejs' 카테고리의 다른 글

node ip 클라이언트 ip 가져오기  (0) 2022.02.14
NODE 에서 파일 저장하기 :: FS 이용  (2) 2022.02.07
[nodejs] 데이터 받기 body-parser  (0) 2021.02.24
[nodejs] nodejs / expressjs 설치  (0) 2021.02.24

스프링에서 파일 저장할때는 그냥 multipart 를 이용해서 슝슝 저장하면 됐는데

노드의 파일 시스템은 fs... 예.. 가져와서 쓴다.

const fs = require('fs');

 

 

파일은 BASE64 STRING으로 받는다~

버퍼를 이용해서 파일 저장..

 

 

저장해따

let file = fs.readFileSync('./message.js', 'utf-8'); //message.js 파일 읽기
let encode = Buffer.from(file).toString('base64'); //파일 base64로 인코딩
let mk = fs.writeFileSync('./encodeFile', encode); // 인코딩된 파일 만들기
let file2 = fs.readFileSync('./encodeFile', 'utf-8'); // 인코딩된 파일 읽기
let decode = Buffer.from(file2, 'base64').toString('utf-8'); //파일 디코딩
let mk2 = fs.writeFileSync('./decodeFile.js', decode); //디코딩된 파일 만들기

 

www.postman.com/downloads/다운로드 하거나 크롬 앱에 설치해서 사용

 

 

body-parser 설치해준다

 

: 이전에 생성한 테이블 참고

javappo.tistory.com/263

 

[mongodb] model & Schema 생성

const mongoose = require('mongoose') const userSchema = mongoose.Schema({ name :{ type : String, maxlength : 50 }, email : { type : String, trim : true, unique : 1 }, passworld : { type : String, mi..

javappo.tistory.com

 

 

const express = require('express')
const app = express()
const port = 3000

const {user, User} = require("./models/User");

const bodyParser = require('body-parser');
//application/x-www/-fom-urlencoded
app.use(bodyParser.urlencoded({extended:true}));
//application/json
app.use(bodyParser.json());

const mongoose = require('mongoose')
mongoose.connect('mongodb+srv://HYOSEON:비~~밀~~번~~호@hyseonbolierplate.9vvek.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',{
    useNewUrlParser: true, useUnifiedTopology:true, useCreateIndex:true, useFindAndModify :false
}).then(() => console.log('mongoDB Connected..'))
 .catch(err => console.log(err))

app.get('/', (req, res) => {  res.send('Hello World!')})


app.post('/register', (req, res) => {
 
    // 회원가입할 때 필요한 정보들을 클라이언트에서 가져오면
    // 그것들을 db에 넣어준다


    const user = new User(req.body)

    user.save((err, userInfo) =>{
        if(err) return res.json({
            success :false, err
        })
        return res.status(200).json({
            success : true
        })
    })
})

app.listen(port, () => {  console.log(`Example app listening at http://localhost:${port}`)})

npm run start로 실행시켜주고 POSTMAN에 입력

 

C:\Users\bit>node -v
v14.16.0

C:\Users\bit>cd documents

C:\Users\bit\Documents>mkdir boiler-plate

C:\Users\bit\Documents>cd boiler-plate

C:\Users\bit\Documents\boiler-plate>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (boiler-plate)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to C:\Users\bit\Documents\boiler-plate\package.json:

{
  "name": "boiler-plate",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes)

expressjs.com/en/starter/hello-world.html

 

 

 

Express "Hello World" example

Hello world example Embedded below is essentially the simplest Express app you can create. It is a single file app — not what you’d get if you use the Express generator, which creates the scaffolding for a full app with numerous JavaScript files, Jade

expressjs.com

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {  res.send('Hello World!')})

app.listen(port, () => {  console.log(`Example app listening at http://localhost:${port}`)})

 

 

 

 

+ Recent posts