NodeJS | Enviando, Recebendo arquivos | #22
Como Trabalhar com Arquivos na API
Introdução ao Tópico
- O encontro aborda como trabalhar com arquivos em uma API, destacando a importância do tráfego de dados.
- É possível enviar arquivos para a API, semelhante ao envio de fotos em redes sociais.
Tipos de Arquivos e Funcionalidade
- Os arquivos podem ser diversos: imagens, vídeos, áudios; o foco inicial será em imagens.
- A apresentação enfatiza a necessidade de não apenas enviar, mas também ler os arquivos armazenados na API.
Configuração do Multer
- Para gerenciar uploads, utiliza-se o pacote
multer, que simplifica o processo de manipulação de arquivos.
- O
multeré instalado via npm e configurado no código para definir onde os arquivos serão armazenados.
Estrutura de Armazenamento
- Uma pasta chamada "Storage" é criada para armazenar os arquivos recebidos pela API.
- Subpastas podem ser criadas dentro da pasta Storage para organizar diferentes tipos de uploads (ex: perfil, álbuns).
Implementação do Upload
- Uma variável
uploadPerfilé criada usando o multer para especificar o destino dos uploads.
- A rota da API é configurada para receber um arquivo através do método POST e salvar na subpasta correta.
Manipulação dos Dados Recebidos
- Ao configurar a rota, define-se que apenas um arquivo será recebido (single), nomeando-o como "imagem".
Enviando e Processando Imagens com Multer
Introdução ao processamento de imagens
- O apresentador discute a importância de informações sobre a imagem, como tipo (JPEG), nome original e tamanho, que podem ser acessadas durante o upload.
- Ele menciona que o nome original não é essencial, mas é útil para demonstrar as capacidades do sistema.
Resposta após o upload
- Após receber a imagem, o sistema retorna informações como caminho da imagem, extensão e nome do arquivo.
- O apresentador explica como testar essa funcionalidade usando o Thunder Client, configurando um POST com parâmetros adequados.
Selecionando e enviando uma imagem
- O processo de envio envolve escolher um arquivo específico para upload; ele demonstra isso selecionando uma imagem do computador.
- Ele opta por salvar uma nova imagem em um formato mais comum (webp), evitando problemas com extensões menos conhecidas.
Verificando o armazenamento da imagem
- Após enviar a imagem, ele verifica se ela foi armazenada corretamente na pasta designada pelo multer.
- A resposta do servidor confirma que a imagem foi processada corretamente e fornece detalhes sobre seu armazenamento.
Identificação única de arquivos
- O multer gera automaticamente nomes únicos para evitar conflitos entre arquivos com nomes iguais.
- Embora a extensão possa não ser salva corretamente inicialmente, ele explica que isso não impede a visualização da imagem quando renomeada.
Considerações sobre tipos de arquivos
- O apresentador destaca que diferentes tipos de arquivos (áudio, vídeo etc.) também podem ser enviados; apenas é necessário direcionar para pastas apropriadas.
- Ele menciona que ao integrar um banco de dados no futuro, será possível gerenciar melhor os arquivos enviados pela aplicação.
Criando rotas na API para imagens
- A discussão avança para como criar rotas na API para permitir acesso às imagens armazenadas.
Como Liberar Acesso a Imagens em uma API?
Acessando Imagens na API
- O apresentador menciona o link da API e o caminho para acessar imagens armazenadas, especificamente em
/Storage/perfil.
- Ao tentar acessar a imagem, ocorre um erro de "não encontrada", indicando que a pasta não foi liberada na API.
- É explicado que por padrão, os arquivos do código são seguros e não acessíveis externamente, apenas os endpoints permitidos estão disponíveis.
Liberando Pastas na API
- O apresentador discute como liberar o acesso à pasta inteira
perfildentro do diretórioStorage, utilizando o Express.
- Ele detalha que usará
express.staticpara permitir o acesso a arquivos estáticos da pastaperfil.
- Com uma linha de código, todos os arquivos dentro de
perfil/storagesão liberados para acesso externo.
Verificando Acesso às Imagens
- O apresentador sugere testar se as alterações funcionaram ao atualizar a página; ele confirma que agora as imagens podem ser acessadas corretamente.