Home Nextjs, Nodejs, csv 파일 업로드 및 파싱
Post
Cancel

Nextjs, Nodejs, csv 파일 업로드 및 파싱

지난 블로그에서 드래그 & 드롭 파일 업로드를 구현을 정리했는데 이번엔 csv 파일 업로드와 파싱관련하여 레퍼런스찾기가 힘들다.. 검색해보면 죄다 csv-parser를 사용한 예시인데 csv-parsefsReadStream만 활용할 수 있기때문에 HTTP POST body를 파싱하기엔 적절하지 않다.

일부 예시는 이런경우 body(Blob)을 로컬에 파일로 저장 한 뒤 ReadStream을 만들어서 사용하면 된다고하는데 왜그래…

파일 업로드

So simple, 이때까지만 해도 금방 끝날 줄만 알았던 작업이…

1
2
3
4
5
6
fetch('/api/product', {
  method: 'POST',
  body: file
}).then((response) => {
  //handle response
});

Backend

서론이 길었으니 바로 결과로..

찾아보니 string을 지원하는csv-parse 라이브러리가있어서 사용.

csv-parser와는 다른 라이브러리이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import { parse } from 'csv-parse';
...

export async function POST(request: Request) {
  const records: any[] = await request
    .blob()
    .then((blob) => blob.text())
    .then((text) => {
      return new Promise((resolve, reject) => {
        parse(text, (err, output) => {
          if (err) reject(err);
          else resolve(output);
        });
      });
    });

  //handle records
  //response result
}
This post is licensed under CC BY 4.0 by the author.

React, tailwind: 드래그 & 드롭 파일 업로드

Spring, opencsv 활용하여 csv 내보내기