Introdução
Carregue e gerencie arquivos no armazenamento em nuvem com otimização automática.
🎯 O que este módulo faz?
O módulo FileUploading permite que você carregue, recupere e exclua arquivos no armazenamento em nuvem OneEntry - imagens, PDFs, vídeos, documentos e qualquer tipo de arquivo com otimização automática e entrega via CDN.
Pense nisso como seu gerenciador de armazenamento em nuvem - você carrega arquivos uma vez, e o OneEntry os armazena, otimiza as imagens automaticamente e as entrega rapidamente via CDN.
📖 Explicação Simples
Imagine que você está construindo um aplicativo onde os usuários podem:
- 📸 Carregar fotos de perfil - redimensionamento e otimização automáticos
- 📄 Carregar documentos - armazenar PDFs, DOCs com segurança
- 🖼️ Carregar imagens de produtos - várias imagens por produto
- 🎥 Carregar vídeos - armazenar e transmitir conteúdo de vídeo
- 📎 Carregar anexos - qualquer tipo de arquivo
Em vez de gerenciar seu próprio armazenamento:
- ✅ Carregue arquivos na nuvem OneEntry
- ✅ Otimização automática de imagens (redimensionar, comprimir)
- ✅ Entrega rápida via CDN em todo o mundo
- ✅ Organize por tipo de entidade (produto, usuário, página)
- ✅ Obtenha URLs de download instantaneamente
- ✅ Exclua arquivos quando não forem mais necessários
Exemplo do mundo real:
Sem FileUploading (manual):
- Configurar bucket AWS S3 ❌
- Configurar CDN ❌
- Escrever código de otimização de imagem ❌
- Gerenciar permissões de arquivo ❌
- Gerar URLs assinadas ❌
Com FileUploading (automático):
- Carregar arquivo → Obter URL de download ✅
- Imagens otimizadas automaticamente ✅
- Entrega via CDN integrada ✅
- Gerenciamento de arquivos fácil ✅
✨ Conceitos Chave
O que é Carregamento de Arquivos?
Carregamento de arquivos é armazenar arquivos no armazenamento em nuvem:
- Carregar - Enviar arquivo para a nuvem OneEntry
- Armazenamento - Arquivos armazenados com segurança na nuvem
- CDN - Entrega rápida a partir de servidores próximos aos usuários
- Otimização - Imagens automaticamente compactadas e redimensionadas
- URL - Obter link de download permanente
Tipos de Arquivos Suportados
Carregue qualquer tipo de arquivo:
| Categoria | Tipos de Arquivos | Otimização Automática |
|---|---|---|
| Imagens | JPG, PNG, GIF, WebP, SVG | Sim (redimensionar, comprimir) |
| Documentos | PDF, DOC, DOCX, XLS, XLSX | Não (armazenados como estão) |
| Vídeos | MP4, MOV, AVI, WebM | Não (armazenados como estão) |
| Arquivos | ZIP, RAR, TAR, GZ | Não (armazenados como estão) |
| Outros | Qualquer tipo de arquivo | Não (armazenados como estão) |
Otimização de Imagens
Ao carregar imagens, o OneEntry pode:
- 📐 Redimensionar - Reduzir dimensões (por exemplo, largura máxima de 1920px)
- 🗜️ Comprimir - Reduzir o tamanho do arquivo (menor, mais rápido)
- 🖼️ Formato - Converter para formato ideal (WebP)
- 📱 Responsivo - Criar múltiplos tamanhos
Exemplo:
Original: 5MB, 4000x3000px
↓ (otimização automática)
Otimizado: 200KB, 1920x1440px
📋 O que você precisa saber
Parâmetros de Carregamento
Ao carregar arquivos, você pode especificar:
await FileUploading.upload(file, {
entity: 'product', // Tipo de entidade (obrigatório)
id: 123, // ID da entidade (opcional)
type: 'image', // Dica de tipo de arquivo (opcional)
width: 1920, // Largura máxima para imagens (opcional)
height: 1080, // Altura máxima para imagens (opcional)
compress: true // Comprimir imagens (opcional)
});
Parâmetros explicados:
file- O objeto de arquivo (do input ou arrastar e soltar)entity- Categoria:product,page,block,user,form,generalid- ID da entidade para associar o arquivo (por exemplo, ID do produto)type- Dica de tipo de arquivo (geralmente detectado automaticamente)width- Largura máxima em pixels (apenas imagens)height- Altura máxima em pixels (apenas imagens)compress- Habilitar compressão (apenas imagens)
Resposta de Carregamento
Após o carregamento, você recebe:
{
filename: "abc123-photo.jpg", // Nome de arquivo único
downloadLink: "https://cdn.../photo.jpg", // URL da CDN
size: 204800, // Tamanho do arquivo (bytes)
}
Campos importantes:
downloadLink- Use esta URL em<img>,<a>,<video>tagsfilename- Salve isso para excluir o arquivo mais tardesize- Tamanho do arquivo em bytes (204800 bytes = 200KB)
Melhores Práticas de Organização de Arquivos
Organize arquivos por tipo de entidade
Opções de Otimização de Imagens
Controle como as imagens são otimizadas:
| Opção | O que faz | Exemplo |
|---|---|---|
| width | Largura máxima (mantém a proporção) | width: 1920 |
| height | Altura máxima (mantém a proporção) | height: 1080 |
| compress | Reduzir o tamanho do arquivo | compress: true |
A proporção é preservada:
Original: 4000x3000 (proporção 4:3)
Com largura: 800
Resultado: 800x600 (ainda 4:3)
Excluindo Arquivos
Sempre forneça entidade, id e nome do arquivo para excluir:
await FileUploading.delete({
entity: 'product',
id: productId,
filename: 'abc123-photo.jpg'
});
Por que todos os três? Os arquivos são organizados por entidade → id → nome do arquivo.
📊 Tabela de Referência Rápida - Métodos
| Método | O que faz | Quando usar |
|---|---|---|
| upload() | Carregar arquivo para armazenamento em nuvem | O usuário carrega imagem, documento |
| getFile() | Obter informações do arquivo (tamanho, tipo, URL) | Verificar se o arquivo existe |
| delete() | Excluir arquivo do armazenamento | Remover arquivos antigos |
❓ Perguntas Comuns (FAQ)
Quais tipos de arquivos posso carregar?
Qualquer tipo de arquivo é suportado:
- Imagens: JPG, PNG, GIF, WebP, SVG, BMP, TIFF
- Documentos: PDF, DOC, DOCX, XLS, XLSX, PPT, TXT
- Vídeos: MP4, MOV, AVI, WebM, MKV
- Arquivos: ZIP, RAR, TAR, GZ
- Outros: Qualquer tipo de arquivo
Apenas imagens são otimizadas automaticamente. Outros arquivos são armazenados como estão.
Qual é o tamanho máximo do arquivo?
Verifique os limites do seu plano OneEntry. Normalmente:
- Plano gratuito: 5MB por arquivo
- Planos pagos: 50MB - 100MB por arquivo
Melhor prática: Otimize as imagens antes do upload para reduzir o tamanho.
Os arquivos são armazenados permanentemente?
Sim, os arquivos são armazenados até que você os exclua manualmente usando FileUploading.delete().
Importante: Limpe arquivos não utilizados para economizar espaço de armazenamento.
Posso carregar arquivos do frontend (navegador)?
Sim! Use input de arquivo ou arraste e solte.
Como faço para validar arquivos antes do upload?
Verifique o tipo e o tamanho do arquivo.
Posso obter uma lista de todos os arquivos carregados para uma entidade?
Não diretamente com este SDK. Você precisa:
- Rastrear nomes de arquivos ao carregar (salvar no banco de dados)
- Usar a API Admin do OneEntry para listar arquivos
Melhor prática: Salve os nomes dos arquivos carregados no seu banco de dados.
Como lido com erros de upload?
Sempre use try/catch.
Posso carregar arquivos diretamente para a CDN?
Não, os uploads passam pela API do OneEntry, que:
- Valida o arquivo
- Otimiza as imagens (se habilitado)
- Armazena na nuvem
- Retorna a URL da CDN
Isso garante segurança e otimização.
O que acontece com os arquivos se eu excluir uma entidade (produto, usuário)?
Os arquivos permanecem no armazenamento mesmo se a entidade for excluída.
Melhor prática: Exclua arquivos antes de excluir a entidade.
Posso redimensionar imagens para dimensões exatas?
Não, a proporção é sempre preservada para evitar distorções.
Como funciona:
- Você define
width: 800, height: 600 - A imagem é redimensionada para caber dentro de 800x600
- A proporção é preservada
Exemplo:
Original: 1000x500 (proporção 2:1)
Com largura: 800, altura: 600
Resultado: 800x400 (ainda 2:1, cabe dentro de 800x600)
💡 Notas Importantes
Segurança de Arquivos
Os arquivos carregados são acessíveis publicamente via CDN:
- ✅ Ótimo para imagens, documentos públicos
- ⚠️ Não carregue arquivos sensíveis (senhas, dados privados)
Para arquivos privados:
- Use a API Admin do OneEntry com autenticação
- Ou implemente seu próprio controle de acesso
Limites de Armazenamento
Monitore seu uso de armazenamento:
- Cada plano tem limites de armazenamento
- Limpe arquivos não utilizados regularmente
- Comprimir imagens antes do upload
Dicas de Otimização de Imagens
Para melhores resultados:
- ✅ Carregue originais de alta qualidade (deixe o OneEntry otimizar)
- ✅ Use
compress: truepara imagens da web - ✅ Defina dimensões apropriadas (por exemplo, 1920px para imagens principais, 500px para miniaturas)
- ❌ Não carregue imagens já comprimidas (perda de qualidade)
Tamanhos recomendados:
- Fotos de perfil: 500x500
- Imagens de produtos: 1920x1920
- Banners principais: 1920x1080
- Miniaturas: 300x300
🎓 Melhores Práticas
- Valide o tipo e o tamanho do arquivo antes do upload
- Associe arquivos com IDs de entidades para organização
- Habilite a compressão para imagens da web
- Lide com erros de upload de forma elegante
- Salve nomes de arquivos para excluir arquivos mais tarde
- Limpe arquivos não utilizados regularmente
- Mostre o progresso do upload para os usuários
Definição do módulo FileUploading
const { FileUploading } = defineOneEntry( "sua-url-do-projeto", { "token": "seu-token-de-aplicativo" });
🔗 Documentação Relacionada
- Módulo de Produtos - Carregar imagens de produtos
- Módulo de Usuários - Carregar fotos de perfil de usuários
- Módulo de Páginas - Carregar arquivos de conteúdo de páginas
- Módulo de Blocos - Carregar arquivos de conteúdo de blocos