실무에서 바로 쓰는 n8n 파일 업로드 및 다운로드 자동화 예시 (feat. Google Drive)
n8n의 기본 폼 노드에는 파일 업로드 기능이 직접적으로 포함되어 있지 않습니다. 하지만, n8n을 통해 파일 업로드 기능을 구현하려면 HTTP Request 노드를 사용하여 외부 서버나 파일 스토리지 서비스로 파일을 업로드하는 방법을 사용할 수 있습니다. 예를 들어, 파일을 업로드할 수 있는 API 엔드포인트를 설정하고, 사용자가 해당 엔드포인트로 파일을 전송하도록 설정할 수 있습니다.
또한, n8n의 커스텀 웹훅 기능을 사용하여 사용자가 파일을 업로드할 수 있는 웹훅을 생성하고, 해당 파일을 다른 노드에서 처리하거나 저장소에 저장하는 워크플로를 구성할 수도 있습니다. 이러한 방법을 통해 파일 업로드 기능을 구현할 수 있으니, 필요에 따라 n8n의 다양한 노드를 조합하여 워크플로를 구성할 수 있습니다.
n8n 워크플로우에서 파일을 첨부하여 처리하는 방법입니다. 예를 들어, 사용자가 파일을 업로드하고 그 파일을 다른 서비스에 전송하는 워크플로우를 만들고자 할 때의 단계입니다.
- Webhook 노드 설정
- n8n의 Webhook 노드를 사용하여 파일을 수신할 수 있는 엔드포인트를 생성합니다.
- Webhook 노드의 설정에서
HTTP Method
를POST
로 설정하고,Response Mode
를Last Node
로 설정합니다. - 업로드된 파일은
Binary Data
로 Webhook 노드에 전달됩니다.
- 파일 처리
- Webhook 노드에서 파일을 수신한 후, 다음 단계에서 파일을 처리할 수 있습니다. 예를 들어, 파일을 변환하거나 특정 형식으로 파싱할 수 있습니다.
- 파일을 다른 노드로 전달하려면,
Set
노드를 사용하여 필요한 데이터를 설정하거나Function
노드를 사용하여 커스텀 로직을 추가할 수 있습니다.
- 외부 서비스로 파일 전송
- HTTP Request 노드를 추가하여 파일을 외부 API나 파일 스토리지 서비스에 전송할 수 있습니다.
- HTTP Request 노드의 설정에서
Binary Property
필드에 Webhook 노드에서 수신한 파일의 키(예:data
)를 입력합니다. - 적절한 HTTP 메서드와 URL을 설정하고, 필요한 인증 정보를 추가합니다.
- 파일 업로드 후 응답
- 파일이 성공적으로 처리되면, 사용자가 파일을 업로드한 후 받게 될 응답을 설정합니다.
- Webhook 노드의 설정에서 응답 메시지를 구성하여 사용자가 업로드 결과를 확인할 수 있도록 합니다.
이 과정을 통해 n8n 워크플로우에서 파일을 첨부하여 처리할 수 있습니다. 각 단계에서 필요한 추가적인 설정이나 노드를 구성하여 원하는 워크플로우를 완성할 수 있습니다. 파일을 첨부하여 처리하는 예제로 사용자가 파일을 업로드하고, n8n이 이를 받아 외부 API로 전송하는 워크플로우를 구현하는 방법입니다.
1. Webhook 노드 설정
Webhook 노드 생성
- Webhook 노드를 추가하고,
HTTP Method
를POST
로 설정합니다. Path
는/upload
와 같이 설정하여, 사용자가 이 경로로 파일을 업로드하도록 합니다.Response Mode
는Last 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을 입력합니다.Method
는POST
로 설정하고,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 드라이브에서 정확히 해당 파일명과 일치하며 삭제되지 않은 파일을 찾습니다.
- q 옵션 (
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을 활용하여 파일 관련 업무를 효과적으로 자동화할 수 있으며, 다양한 산업 및 업무 환경에서 적용 가능합니다.