NodeJS 에서 Axios 를 통해 파일 전송

Node.js에서 파일을 읽고 axios를 사용하여 이를 다른 서버에 전송하는 방법은 다음과 같습니다. 일반적으로 파일을 읽을 때는 fs 모듈을 사용하며, HTTP 요청에 파일을 첨부할 때는 FormData를 활용합니다.

아래는 파일을 읽고 axios를 사용하여 POST 요청으로 전송하는 예제입니다:

1. 파일을 읽고 FormData 생성

javascript
const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');

async function sendFile(filePath, url) {
try {
// 파일 스트림 읽기
const fileStream = fs.createReadStream(filePath);

// FormData 객체 생성
const formData = new FormData();
formData.append('file', fileStream);

// axios로 POST 요청
const response = await axios.post(url, formData, {
headers: {
...formData.getHeaders() // FormData의 Content-Type 헤더 포함
}
});

console.log('응답 데이터:', response.data);
} catch (error) {
console.error('파일 전송 중 오류:', error.message);
}
}

// 사용 예제
const filePath = './example.txt'; // 전송할 파일 경로
const url = 'https://example.com/upload'; // 파일 전송할 API 엔드포인트
sendFile(filePath, url);


2. 주요 설명

  • fs.createReadStream:
    파일을 스트림 형식으로 읽어 메모리 사용량을 줄입니다. 특히 대용량 파일 전송에 유리합니다.
  • FormData:
    file 필드로 파일을 추가하여 멀티파트 요청을 생성합니다.
  • axios.post:
    파일과 함께 생성된 FormData를 전송합니다. formData.getHeaders()를 호출하여 올바른 Content-Type 헤더를 추가합니다.

3. 주의 사항

  1. 파일 경로 확인: 파일 경로가 올바른지 확인하세요.
  2. API 사양 확인: 서버가 multipart/form-data 요청을 처리할 수 있는지 확인하세요.
  3. 에러 처리: 네트워크 오류 및 서버 응답을 적절히 처리합니다.

이 방식은 파일 업로드 API와 잘 맞는 일반적인 방법입니다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다