Upload de múltiplos arquivos para o storage
Batch Upload Files
Realiza upload de múltiplos arquivos para o storage em uma única requisição.
Endpoint
POST /storage-explorer/storage/upload/batch
Permissões Requeridas
STORAGE_EXPLORER.WRITE
Content-Type
multipart/form-data
Form Data Parameters
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
files | file[] | Sim | Arquivos para upload (múltiplos) |
folder_path | string | Não | Caminho da pasta destino (padrão: "/") |
Formatos Suportados
- CSV (
.csv) - Excel (
.xlsx,.xls) - JSON (
.json) - Parquet (
.parquet) - TXT (
.txt)
Exemplo de Requisição
curl -X POST "https://maestro.dadosfera.ai/storage-explorer/storage/upload/batch" \
-H "Authorization: <JWT_TOKEN>" \
-F "files=@orders_2024_01.csv" \
-F "files=@products_jan.xlsx" \
-F "[email protected]" \
-F "folder_path=/raw/sales"Exemplo com Python
import requests
url = "https://maestro.dadosfera.ai/storage-explorer/storage/upload/batch"
headers = {
"Authorization": f"Bearer {jwt_token}"
}
files = [
('files', ('orders_2024_01.csv', open('orders_2024_01.csv', 'rb'), 'text/csv')),
('files', ('products_jan.xlsx', open('products_jan.xlsx', 'rb'), 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')),
('files', ('events.json', open('events.json', 'rb'), 'application/json'))
]
data = {
'folder_path': '/raw/sales'
}
response = requests.post(url, headers=headers, files=files, data=data)Exemplo de Resposta
Success (201 Created):
{
"upload_id": "upl_m1n2o3p4",
"folder_path": "/raw/sales",
"uploaded_at": "2024-01-15T10:30:00Z",
"uploaded_by": "[email protected]",
"total_files": 3,
"total_size_bytes": 933888,
"status": "completed",
"files": [
{
"file_name": "orders_2024_01.csv",
"file_path": "/raw/sales/orders_2024_01.csv",
"file_size_bytes": 524288,
"file_format": "csv",
"dataset_id": "ds_x1y2z3",
"status": "success",
"row_count": 5420,
"column_count": 5
},
{
"file_name": "products_jan.xlsx",
"file_path": "/raw/sales/products_jan.xlsx",
"file_size_bytes": 153600,
"file_format": "excel",
"dataset_id": "ds_a2b3c4",
"status": "success",
"row_count": 850,
"column_count": 8,
"sheets": ["Products"]
},
{
"file_name": "events.json",
"file_path": "/raw/sales/events.json",
"file_size_bytes": 256000,
"file_format": "json",
"dataset_id": "ds_b3c4d5",
"status": "success",
"row_count": 1200,
"column_count": 12
}
],
"errors": []
}Partial Success (207 Multi-Status):
{
"upload_id": "upl_m1n2o3p4",
"status": "partial",
"total_files": 3,
"successful_files": 2,
"failed_files": 1,
"files": [
{
"file_name": "orders_2024_01.csv",
"status": "success",
"dataset_id": "ds_x1y2z3"
},
{
"file_name": "products_jan.xlsx",
"status": "success",
"dataset_id": "ds_a2b3c4"
},
{
"file_name": "corrupted.json",
"status": "error",
"error": "Invalid JSON format"
}
]
}Limites
- Tamanho máximo por arquivo: 500 MB
- Número máximo de arquivos por upload: 100
- Tamanho total máximo por requisição: 5 GB
Códigos de Status
| Código | Descrição |
|---|---|
201 | Todos os arquivos enviados com sucesso |
207 | Upload parcial (alguns arquivos falharam) |
400 | Parâmetros inválidos ou arquivos ausentes |
401 | Não autenticado |
403 | Sem permissão STORAGE_EXPLORER.WRITE |
413 | Arquivo ou requisição muito grande |
415 | Formato de arquivo não suportado |
