일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- redis
- Gradle
- Spring Batch
- Design Patterns
- linux
- elasticsearch
- Spring Boot
- java
- IntelliJ
- Git
- it
- Web Server
- javascript
- 맛집
- 요리
- db
- php
- tool
- devops
- JVM
- MySQL
- jenkins
- jsp
- ubuntu
- Spring
- ReactJS
- AWS
- Oracle
- springboot
- laravel
Archives
- Today
- Total
아무거나
[NodeJS] CSV File 을 JSON 으로 변환 (CSV to JSON) 본문
반응형
Nodejs Express Document
기능
- S3 에 File Upload 기능 구현
- 라이브러리 설치
$ npm install multer $ npm install aws-sdk
- File Upload Util
const fs = require("fs") const path = require("path") const multer = require("multer") /** * Save For File Upload (Use Multer Module) */ export const saveForFileUpload = multer({ storage: multer.diskStorage({ destination(req, file, done) { const dirPath = path.resolve("./") + "\\uploads" if (!fs.existsSync(dirPath)) { fs.mkdirSync(dirPath, { recursive: true }) } done(null, "uploads/") }, filename(req, file, done) { // 파일명을 어떤 이름으로 올릴지 const ext = path.extname(file.originalname) // 파일의 확장자 done(null, path.basename(file.originalname, ext) + "_" + Date.now() + ext) }, }), limits: { fileSize: 5 * 1024 * 1024 }, })
- S3 File Upload Util
import AWS from "aws-sdk" const fs = require("fs") export const s3FileUpload = async (reqFile) => { const result = new Object() const file = fs.createReadStream(reqFile.path) // process.env.REACT_APP_AWS_SECRET_KEY AWS.config.update({ accessKeyId: "{accessKeyId}", secretAccessKey: "{secretAccessKey}", region: "ap-northeast-2", // 서울 리전 }) const s3 = new AWS.S3() // S3 Upload Required Option Setting const param = { Bucket: "test/upload", Key: reqFile.filename, ACL: "public-read", Body: file, ContentType: reqFile.mimetype, } const data = await s3.upload(param) result.file = param result.uploadResult = data result.reqFile = reqFile return result }
- API 생성
// File 은 formdata 형식으로 uploadFile 값으로 넘김 app.post( `fileUpload`, saveForFileUpload.single("uploadFile"), async (req, res) => { await s3FileUpload(req.file) } )
- 라이브러리 설치
- CSV File 을 JSON 으로 변환 (CSV to JSON)
- 모듈추가
$ npm i multer
- API
import { saveForFileUpload, csvFileToJson } from "../../utils/importUtils" app.post( "/csvImport", saveForFileUpload.single("uploadFile"), async (req, res) => { const jsonData = csvFileToJson(req) console.log(jsonData) res.json(result) } )
- importUtils (여기에서 함수를 만들어서 공통으로 사용)
const fs = require("fs") const path = require("path") const multer = require("multer") /** * Save For File Upload (Use Multer Module) */ export const saveForFileUpload = multer({ storage: multer.diskStorage({ destination(req, file, done) { const dirPath = path.resolve("./") + "\\uploads" if (!fs.existsSync(dirPath)) { fs.mkdirSync(dirPath, { recursive: true }) } done(null, "uploads/") }, filename(req, file, done) { // 파일명을 어떤 이름으로 올릴지 const ext = path.extname(file.originalname) // 파일의 확장자 done(null, path.basename(file.originalname, ext) + "_" + Date.now() + ext) }, }), limits: { fileSize: 5 * 1024 * 1024 }, }) /** * Csv File To json Object Parser * @param {Request} req * - Request Data * @returns */ export const csvFileToJson = (req) => { const data = fs.readFileSync(req.file.path, { encoding: "utf8" }) const rows = data.split("\r\n") if (rows[rows.length - 1] === "") { rows.pop() } let results = [] let columnTitle = [] for (const i in rows) { const row = rows[i] const data = row.split(",") if (i === "0") { columnTitle = data } else { let row_data = {} for (const index in columnTitle) { const title = columnTitle[index].replaceAll('"', "") row_data[title] = data[index] } results.push(row_data) } } return results }
- 모듈추가
반응형
'Javascript & HTML & CSS > NodeJS' 카테고리의 다른 글
log4js-node 로그 라이브러리 적용 (0) | 2024.01.17 |
---|---|
NodeJS 를 사용하여 S3 에 File upload (파일 업로드) 기능 구현 (2) | 2022.12.03 |
node-schedule 을 활용한 스케쥴러 구현 (0) | 2022.12.02 |
Comments