프로그램 (PHP,Python)

실무에서 바로 쓰는 n8n 파일 업로드 및 다운로드 자동화 예시 (feat. Google Drive)

날으는물고기 2025. 4. 3. 00:49
728x90

n8n의 기본 폼 노드에는 파일 업로드 기능이 직접적으로 포함되어 있지 않습니다. 하지만, n8n을 통해 파일 업로드 기능을 구현하려면 HTTP Request 노드를 사용하여 외부 서버나 파일 스토리지 서비스로 파일을 업로드하는 방법을 사용할 수 있습니다. 예를 들어, 파일을 업로드할 수 있는 API 엔드포인트를 설정하고, 사용자가 해당 엔드포인트로 파일을 전송하도록 설정할 수 있습니다.

 

또한, n8n의 커스텀 웹훅 기능을 사용하여 사용자가 파일을 업로드할 수 있는 웹훅을 생성하고, 해당 파일을 다른 노드에서 처리하거나 저장소에 저장하는 워크플로를 구성할 수도 있습니다. 이러한 방법을 통해 파일 업로드 기능을 구현할 수 있으니, 필요에 따라 n8n의 다양한 노드를 조합하여 워크플로를 구성할 수 있습니다.

 

n8n 워크플로우에서 파일을 첨부하여 처리하는 방법입니다. 예를 들어, 사용자가 파일을 업로드하고 그 파일을 다른 서비스에 전송하는 워크플로우를 만들고자 할 때의 단계입니다.

  1. Webhook 노드 설정
    • n8n의 Webhook 노드를 사용하여 파일을 수신할 수 있는 엔드포인트를 생성합니다.
    • Webhook 노드의 설정에서 HTTP MethodPOST로 설정하고, Response ModeLast Node로 설정합니다.
    • 업로드된 파일은 Binary Data로 Webhook 노드에 전달됩니다.
  2. 파일 처리
    • Webhook 노드에서 파일을 수신한 후, 다음 단계에서 파일을 처리할 수 있습니다. 예를 들어, 파일을 변환하거나 특정 형식으로 파싱할 수 있습니다.
    • 파일을 다른 노드로 전달하려면, Set 노드를 사용하여 필요한 데이터를 설정하거나 Function 노드를 사용하여 커스텀 로직을 추가할 수 있습니다.
  3. 외부 서비스로 파일 전송
    • HTTP Request 노드를 추가하여 파일을 외부 API나 파일 스토리지 서비스에 전송할 수 있습니다.
    • HTTP Request 노드의 설정에서 Binary Property 필드에 Webhook 노드에서 수신한 파일의 키(예: data)를 입력합니다.
    • 적절한 HTTP 메서드와 URL을 설정하고, 필요한 인증 정보를 추가합니다.
  4. 파일 업로드 후 응답
    • 파일이 성공적으로 처리되면, 사용자가 파일을 업로드한 후 받게 될 응답을 설정합니다.
    • Webhook 노드의 설정에서 응답 메시지를 구성하여 사용자가 업로드 결과를 확인할 수 있도록 합니다.

이 과정을 통해 n8n 워크플로우에서 파일을 첨부하여 처리할 수 있습니다. 각 단계에서 필요한 추가적인 설정이나 노드를 구성하여 원하는 워크플로우를 완성할 수 있습니다. 파일을 첨부하여 처리하는 예제로 사용자가 파일을 업로드하고, n8n이 이를 받아 외부 API로 전송하는 워크플로우를 구현하는 방법입니다.

1. Webhook 노드 설정

Webhook 노드 생성

  • Webhook 노드를 추가하고, HTTP MethodPOST로 설정합니다.
  • Path/upload와 같이 설정하여, 사용자가 이 경로로 파일을 업로드하도록 합니다.
  • Response ModeLast Node로 설정합니다.
{
  "nodes": [
    {
      "parameters": {
        "path": "upload",
        "responseMode": "lastNode",
        "options": {}
      },
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [250, 300]
    }
  ]
}

2. 파일 처리

Set 노드 추가 (필요에 따라)

  • Webhook 노드 다음에 Set 노드를 추가하여 파일의 메타데이터를 설정할 수 있습니다.
  • Binary Property를 설정하여 Webhook에서 수신한 파일 데이터를 처리할 준비를 합니다.
{
  "nodes": [
    {
      "parameters": {
        "keepOnlySet": true,
        "values": {
          "binary": [
            {
              "name": "data",
              "value": "data"
            }
          ]
        }
      },
      "name": "Set",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [450, 300]
    }
  ]
}

3. 외부 서비스로 파일 전송

HTTP Request 노드 추가

  • HTTP Request 노드를 추가하고, 파일을 전송할 외부 서비스의 URL을 입력합니다.
  • MethodPOST로 설정하고, URL은 파일을 수신할 API의 엔드포인트를 입력합니다.
  • Binary Property에는 Webhook에서 수신한 파일의 키를 입력합니다 (data).
{
  "nodes": [
    {
      "parameters": {
        "url": "https://example.com/upload",
        "method": "POST",
        "responseFormat": "string",
        "jsonParameters": false,
        "options": {},
        "sendBinaryData": true,
        "binaryPropertyName": "data"
      },
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [650, 300]
    }
  ]
}

4. 파일 업로드 후 응답 설정

Webhook 응답 설정

  • 사용자가 파일을 업로드한 후 받을 응답을 설정합니다.
  • Set 노드를 사용하여 응답 메시지를 구성할 수 있습니다.
{
  "nodes": [
    {
      "parameters": {
        "keepOnlySet": true,
        "values": {
          "string": [
            {
              "name": "response",
              "value": "File uploaded successfully"
            }
          ]
        }
      },
      "name": "Set Response",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [850, 300]
    }
  ]
}

이 워크플로우는 Webhook을 통해 파일을 수신하고, Set 노드를 통해 파일의 메타데이터를 설정하며, HTTP Request 노드를 통해 외부 서비스로 파일을 전송한 후, 사용자에게 성공 메시지를 반환합니다. 이 예시는 n8n에서 파일 업로드 기능을 포함한 워크플로우를 구축하는 데 필요한 세부적인 설정과 노드 구성 방법을 제공합니다.

 

n8n을 사용하여 수신한 파일을 Google 드라이브에 업로드하는 방법입니다. 이 과정에서는 Webhook 노드를 통해 파일을 수신하고, Google 드라이브 노드를 사용하여 해당 파일을 업로드합니다.

1. Webhook 노드 설정

외부에서 파일을 업로드할 수 있는 엔드포인트를 생성하기 위해 Webhook 노드를 설정합니다.

  • Webhook 노드 추가: n8n 에디터에서 새로운 Webhook 노드를 워크플로우에 추가합니다.
  • HTTP Method 설정: POST로 설정하여 파일 업로드 요청을 받도록 합니다.
  • Path 설정: 예를 들어, /upload와 같이 엔드포인트 경로를 지정합니다.
  • Response Mode 설정: When Last Node Finishes로 설정하여 워크플로우의 마지막 노드가 완료된 후 응답을 반환하도록 합니다.
  • Options 설정
    • Binary Data: 활성화하여 바이너리 데이터를 수신할 수 있도록 합니다.
    • Binary Property: data로 설정하여 업로드된 파일이 이 속성에 저장되도록 합니다.

 

Webhook 노드 설정 예시

{
  "nodes": [
    {
      "parameters": {
        "path": "upload",
        "responseMode": "whenLastNodeFinishes",
        "options": {
          "binaryData": true,
          "binaryProperty": "data"
        }
      },
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [250, 300]
    }
  ]
}

이 설정을 통해 /upload 경로로 POST 요청 시 파일을 수신할 수 있는 엔드포인트가 생성됩니다.

2. Google 드라이브 노드 설정

수신한 파일을 Google 드라이브에 업로드하기 위해 Google 드라이브 노드를 설정합니다.

  • Google 드라이브 노드 추가: Webhook 노드 다음에 Google 드라이브 노드를 추가합니다.
  • Credential 설정: Google 드라이브에 접근하기 위한 자격 증명을 설정합니다.
  • Resource 설정: File로 선택합니다.
  • Operation 설정: Upload로 선택합니다.
  • Input Data Field Name 설정: data로 설정하여 Webhook 노드에서 수신한 바이너리 데이터를 참조합니다.
  • File Name 설정: 업로드할 파일의 이름을 지정합니다. 예를 들어, uploaded_file.txt와 같이 설정할 수 있습니다.
  • Parent Folder 설정: 파일을 업로드할 Google 드라이브의 폴더를 지정합니다.

 

Google 드라이브 노드 설정 예시

{
  "nodes": [
    {
      "parameters": {
        "resource": "file",
        "operation": "upload",
        "inputDataFieldName": "data",
        "fileName": "uploaded_file.txt",
        "parentFolder": "root"
      },
      "name": "Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 1,
      "position": [450, 300]
    }
  ]
}

이 설정을 통해 Webhook 노드에서 수신한 파일을 지정된 이름과 폴더로 Google 드라이브에 업로드할 수 있습니다.

3. 워크플로우 실행 및 테스트

설정이 완료되면 워크플로우를 실행하여 파일 업로드 기능을 테스트합니다.

  • 엔드포인트 호출: 외부 클라이언트에서 /upload 엔드포인트로 POST 요청을 보내고, 파일을 업로드합니다.
  • 파일 확인: Google 드라이브에 접속하여 지정된 폴더에 파일이 업로드되었는지 확인합니다.

 

이러한 단계를 통해 n8n에서 수신한 파일을 Google 드라이브에 업로드하는 워크플로우를 구축할 수 있습니다. 필요에 따라 추가적인 노드나 로직을 결합하여 워크플로우를 확장할 수 있습니다. 사용자가 특정 파일 다운로드 요청을 하면, 구글 드라이브에서 해당 파일을 가져와 파일 모드(바이너리)로 반환하도록 할 수 있습니다.

 

사용자 → Webhook 요청 (파일명 등) → n8n (Webhook 노드) → Google Drive에서 파일 조회 및 다운로드 (Google Drive 노드) → 파일(바이너리 데이터) 반환

1. Webhook 노드 설정 (파일 요청 수신)

Webhook을 통해 사용자가 다운로드를 요청할 파일명이나 ID를 전달받습니다.

  • 노드 추가: Webhook 노드
  • 설정 예시
    {
    "nodes": [
      {
        "parameters": {
          "path": "download",
          "responseMode": "lastNode",
          "httpMethod": "GET"
        },
        "name": "Webhook",
        "type": "n8n-nodes-base.webhook",
        "typeVersion": 1,
        "position": [200, 300]
      }
    ]
    }

이 노드의 URL 예시

https://your-n8n-instance/webhook/{워크플로우ID}/download?fileName=test.pdf

여기서 fileName=test.pdf와 같은 형식으로 파일명을 전달받습니다.

2. Set 노드로 파일명 설정 (Webhook 데이터 처리)

Webhook에서 수신한 파일명을 명확하게 처리할 수 있도록 합니다.

  • 노드 추가: Set 노드
  • 설정 예시
    {
    "nodes": [
      {
        "parameters": {
          "keepOnlySet": true,
          "values": {
            "string": [
              {
                "name": "fileName",
                "value": "={{$json.query.fileName}}"
              }
            ]
          }
        },
        "name": "Set FileName",
        "type": "n8n-nodes-base.set",
        "typeVersion": 1,
        "position": [400, 300]
      }
    ]
    }

여기서 {{$json.query.fileName}}로 쿼리에서 받은 파일명을 변수로 사용합니다.

3. Google Drive 노드로 파일 검색

구글 드라이브에서 전달받은 파일명으로 파일을 조회하고, 파일 ID를 얻습니다.

  • 노드 추가: Google Drive 노드
  • 설정 예시
    {
      "nodes": [
        {
          "parameters": {
            "resource": "file",
            "operation": "list",
            "options": {
              "q": "name={{.fileName}} and trashed=false"
            }
          },
          "name": "Google Drive - Search File",
          "type": "n8n-nodes-base.googleDrive",
          "typeVersion": 1,
          "position": [
            600,
            300
          ],
          "credentials": {
            "googleDriveOAuth2Api": "<Your Google Credential>"
          }
        }
      ]
    }
    • q 옵션 (name='{{$json.fileName}}' and trashed=false):
      Google 드라이브에서 정확히 해당 파일명과 일치하며 삭제되지 않은 파일을 찾습니다.

4. Google Drive 노드로 파일 다운로드 (바이너리)

위에서 얻은 파일 ID를 활용해 바이너리 데이터를 다운로드합니다.

  • 노드 추가: Google Drive 노드
  • 설정 예시
    {
      "nodes": [
        {
          "parameters": {
            "resource": "file",
            "operation": "download",
            "fileId": "={{$json.id}}"
          },
          "name": "Google Drive - Download File",
          "type": "n8n-nodes-base.googleDrive",
          "typeVersion": 1,
          "position": [
            800,
            300
          ],
          "credentials": {
            "googleDriveOAuth2Api": "<Your Google Credential>"
          }
        }
      ]
    }
  • fileId 옵션: 위 노드에서 검색된 파일 ID({{$json.id}})를 사용하여 다운로드합니다.
  • 파일이 성공적으로 다운로드되면 결과는 바이너리(binary) 형태로 반환됩니다.

5. 파일 다운로드 응답 설정 (Respond to Webhook 노드)

마지막 단계로, 파일을 사용자에게 바이너리 형태로 응답합니다.

  • 노드 추가: Respond to Webhook 노드
  • 설정 예시
    {
      "nodes": [
        {
          "parameters": {
            "responseCode": 200,
            "responseMode": "binary",
            "binaryPropertyName": "data",
            "options": {
              "responseHeaders": {
                "entries": [
                  {
                    "name": "Content-Disposition",
                    "value": "attachment; filename={{$node[\"Set FileName\"].json[\"fileName\"]}}"
                  }
                ]
              }
            }
          },
          "name": "Respond to Webhook",
          "type": "n8n-nodes-base.respondToWebhook",
          "typeVersion": 1,
          "position": [
            1000,
            300
          ]
        }
      ]
    }
  • responseMode: 반드시 binary로 설정합니다.
  • binaryPropertyName: data를 입력해 Google Drive 노드에서 다운로드된 바이너리 데이터를 지정합니다.
  • Content-Disposition 헤더 설정: 파일 다운로드 시 원본 파일명을 유지하여 반환하도록 설정합니다.

보안 포인트 및 가이드라인

  • Webhook URL 인증 및 보안
    • n8n의 Webhook URL을 인증 메커니즘과 함께 제공하거나 API 키 등을 활용하여 보안을 강화하세요.
  • 파일 접근 권한 관리
    • Google Drive 노드에 연결된 계정 권한을 최소화하여 특정 파일이나 폴더만 접근 가능하게 합니다.
  • 파일명 검증 및 허용된 목록 제한
    • Webhook 요청 시 허용된 파일명만 다운로드가 가능하도록 제한하면 보안성을 높일 수 있습니다.
  • 로깅 및 모니터링
    • 파일 다운로드 요청 로그를 남기고 모니터링하여 비정상적인 접근 시도를 조기에 감지합니다.

이 방법을 활용하여 n8n을 통해 Google Drive에서 파일을 안전하게 다운로드하고 사용자에게 제공하는 프로세스를 구축할 수 있습니다. 아래는 n8n을 활용하여 파일 업로드 및 다운로드와 관련된 워크플로우를 구축하여 자동화할 수 있는 실제적인 활용 사례 예시입니다.

  • 내부 시스템에서 특정 문서의 최신 버전 자동 배포
  • 고객 포털에서 사용자의 요청에 따라 동적으로 문서를 제공
  • 기업 내부 자료실에서 승인된 파일만 제공하는 다운로드 서비스 구현

 n8n 파일 업로드 및 다운로드 활용 사례 예시

1. 고객지원 시스템에서 증빙 자료 자동 업로드

  • 개요
    • 고객이 웹페이지를 통해 증빙 자료를 제출하면, n8n을 통해 해당 파일을 자동으로 구글 드라이브 또는 아마존 S3 등 클라우드 스토리지에 업로드합니다.
  • 활용 노드
    • Webhook → HTTP Request / Google Drive / Amazon S3
  • 실제 사례
    • 고객이 불만 접수 시 첨부된 이미지를 자동으로 관리자의 클라우드 스토리지로 업로드 후, 슬랙이나 이메일로 알림을 보냅니다.

 

2. 정기 보고서 자동 다운로드 및 내부 배포

  • 개요
    • 특정 날짜 또는 사용자의 요청에 따라 구글 드라이브에 있는 최신 보고서를 자동으로 다운로드해 내부 시스템이나 포털에 제공합니다.
  • 활용 노드
    • Cron / Webhook → Google Drive → HTTP Response (바이너리 반환)
  • 실제 사례
    • 매주 월요일 최신 영업 보고서를 자동으로 다운로드하고, 내부 포털 또는 채팅 도구로 전달하여 직원들이 빠르게 접근할 수 있게 합니다.

 

3. 데이터 수집 자동화 및 데이터 웨어하우스 업로드

  • 개요
    • 여러 곳에서 자동으로 수집된 데이터를 n8n이 받아 클라우드 스토리지로 업로드하고, 추가적으로 데이터 웨어하우스(DB)에 저장하여 분석 환경을 구성합니다.
  • 활용 노드
    • Webhook → Set / Function → Google Drive / AWS S3 → Database(MySQL, PostgreSQL 등)
  • 실제 사례
    • IoT 장비로부터 센서 데이터를 정기적으로 받아 클라우드 스토리지와 데이터베이스로 자동 업로드하여 실시간 모니터링 및 분석을 수행합니다.

 

4. 대용량 파일 다운로드 서비스 제공

  • 개요
    • 클라이언트가 특정한 인증 과정을 거친 후 대용량 파일을 안전하고 빠르게 다운로드할 수 있는 서비스를 구축합니다.
  • 활용 노드
    • Webhook → 인증 처리 (Function / HTTP Request) → Google Drive → Respond to Webhook (바이너리)
  • 실제 사례
    • 대용량 제품 매뉴얼이나 기술 문서 등 민감한 자료를 인증된 사용자만 다운로드할 수 있도록 보안성이 높은 파일 제공 서비스를 제공합니다.

 

5. 채용 지원자의 파일 자동 분류 및 저장

  • 개요
    • 채용 사이트를 통해 지원한 사용자의 이력서와 포트폴리오를 n8n으로 자동 업로드하여 직무별, 지원자별로 분류하여 저장 및 관리합니다.
  • 활용 노드
    • Webhook → Set (지원자 정보 추출) → Google Drive (폴더 생성 및 파일 업로드)
  • 실제 사례
    • 지원자의 지원 직무와 이름을 기준으로 폴더를 자동 생성하여 이력서 및 포트폴리오를 자동으로 구글 드라이브에 정리합니다.

 

6. 사내 문서 관리 자동화 (백업 및 동기화)

  • 개요
    • 직원이 업데이트한 문서를 자동으로 백업하고 동기화하여 데이터 손실 방지 및 최신 버전 관리를 지원합니다.
  • 활용 노드
    • Webhook / Cron → Google Drive (문서 다운로드 및 업로드)
  • 실제 사례
    • 중요 사내 문서를 매일 밤 자동으로 백업하여 재해 복구 환경을 구축하거나, 문서 변경 시 자동으로 버전별로 구글 드라이브에 저장합니다.

 

7. 외부 파트너와의 파일 교환 자동화

  • 개요
    • 외부 파트너와 주고받는 계약서, 견적서 등 중요한 파일을 자동으로 전달받고 업로드하며, 파일 수신 및 발신 내역을 기록합니다.
  • 활용 노드
    • Webhook (수신) → Google Drive (업로드) → HTTP Request (외부 파트너 알림)
  • 실제 사례
    • 계약서나 견적서가 업로드될 때 파트너 및 담당자에게 자동 알림이 발송되어 업무 효율을 높이고 누락 방지와 투명성을 제공합니다.

 

8. 마케팅 캠페인 자료 자동 배포

  • 개요
    • 마케팅 팀이 제작한 최신 홍보 자료 및 캠페인 파일을 특정 시점이나 요청에 따라 자동으로 배포합니다.
  • 활용 노드
    • Cron / Webhook → Google Drive (자료 다운로드) → 이메일 또는 슬랙 등을 통해 배포
  • 실제 사례
    • 매달 초 마케팅팀에서 최신 캠페인 자료를 영업팀 전체에 자동 배포하여 업무 효율과 자료 최신화를 유지합니다.

 

9. 내부 감사 자료 제출 자동화

  • 개요
    • 직원들이 제출한 감사 관련 자료를 중앙에서 수집하여, 감사팀이 손쉽게 접근 가능하도록 자동화합니다.
  • 활용 노드
    • Webhook → Google Drive (자동 업로드 및 분류) → 감사팀 알림 (이메일 또는 메신저)
  • 실제 사례
    • 분기별 감사 자료를 직원들이 제출하면 자동으로 감사팀 전용 폴더에 저장하고, 자동으로 알림을 발송하여 자료 관리의 정확성과 신속성을 높입니다.

활용의 기대 효과

  • 업무 프로세스의 자동화로 업무 효율성 향상
  • 파일 관리의 정확성과 일관성 확보
  • 보안 및 감사 대응력 강화
  • 내부 리소스 관리의 간편화

 

위와 같은 방식으로 n8n을 활용하여 파일 관련 업무를 효과적으로 자동화할 수 있으며, 다양한 산업 및 업무 환경에서 적용 가능합니다.

728x90