Mudanças entre as edições de "Exemplo de upload de arquivos com Node.js"

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa
m (Integratorhost moveu a página Exemplo de upload de arquivos com nodeJS para Exemplo de upload de arquivos com Node.js sem deixar um redirecionamento)
 

Edição atual tal como às 17h22min de 18 de janeiro de 2024

Índice

Antes de começar

As orientações contidas neste tutorial exigem o painel Integrator Node.js. Caso seu plano não possua suporte ao Node.js, converse com o nosso comercial sobre planos disponíveis.

Sobre o tutorial

O exemplo disponibilizado cria um servidor que permite aos clientes enviar arquivos por meio de um formulário, onde os arquivos são armazenados no diretório "uploads", e os nomes dos arquivos enviados são exibidos e acessíveis por meio de uma rota, no exemplo "/listar".

Para baixar o exemplo completo, Clique Aqui.


O arquivo server.js

O arquivo server.js possui o código apresentado na Listagem abaixo. Veja o detalhe da porta que não é definida diretamente. Usamos a variável process.env.PORT para que o painel forneça a porta.

Toda explicação detalhada do arquivo server.js, esta descrita no exemplo completo disponível para baixar, citado mais acima. Ao abrir o arquivo server.js, comentamos e explicamos cada linha apresentada do código.


const express = require('express');

const multer  = require('multer');

const path    = require('path');

let uploadedFiles = [];


const app = express();
const port = process.env.PORT //aqui será a porta que o PM2 irá colocar
//const port = 3000;

const storage = multer.diskStorage({
    
    destination: (req, file, cb) => {
        cb(null, 'uploads/');
    },


    filename: (req, file, cb) => {
        cb(null, Date.now() + path.extname(file.originalname));
    }
});

const upload = multer({ storage: storage });

app.get('/', (req, res) => {
    console.log("ROTA recebida para / RAIZ do seu Domínio");
    res.sendFile(path.join(__dirname, 'index.html'));
});

app.post('/upload', upload.single('sampleFile'), (req, res) => {
    if (!req.file) {
        return res.send('Por favor, selecione um arquivo para fazer upload.');
    }
    uploadedFiles.push(req.file.filename);
    res.send('Arquivo enviado com sucesso!');
});

const fs = require('fs');
app.get('/listar', (req, res) => {
    fs.readdir(path.join(__dirname, 'uploads'), (err, files) => {
        if (err) {
            return res.status(500).send('Erro ao listar os arquivos.');
        }
        res.json(files);
    });
});

app.listen(port, function(){  
    console.info(`Server running in the port ${port}`);
});


Subindo o aplicativo e registrando no Integrator Node.js

1. Para o deploy através do painel, use a aba Deploy e selecione o arquivo compactado .zip.

2. Em seguida, com upload feito corretamente e com sucesso, basta clicar para configurar o aplicativo no domínio/subdomínio

3. O registro do aplicativo ocorre quando ele já foi levado ao servidor, no diretório do seu usuário. O aplicativo precisa ser registrado para que ele se torne funcional no servidor, tanto no acesso através da porta definida, como também pelo domínio.

Registro do aplicativo
Figura: Registrando o aplicativo pelo painel


  • O nome do aplicativo - Ele será identificado nas configurações do usuário;
  • Dominio para Deploy - Selecione o domínio/subdomínio onde irá acessar o aplicativo;
  • A URL do Aplicação - A raiz do domínio é para manter barra / apenas. Se colocar /outronome, o aplicativo só será visível quando acessar essa URI;
  • Nodejs do Aplicativo - A versão do Node.js que vai operar em seu aplicativo;
  • Memoria do Aplicativo - A memória que será definida no aplicativo;
  • Index do Aplicativo - O arquivo inicial do aplicativo Node.js;
  • Caminho do aplicativo - O caminho onde se encontra o aplicativo. Se subir pelo painel, o deploy fica no diretorio applications/ do seu usuário. O nome precisa ter o diretório onde se obtém ao descompactar o aplicativo, por exemplo;
  • Porta do Aplicativo - A porta que será executado o aplicativo Node.js através do PM2;
  • Modo de execução - O modo de execução do aplicativo. Pode ser Desenvolvimento ou Produção. O modo Desenvolvimento exibe erros em caso de falhas da execução;


Instalando as dependências

1. Em Ação, ainda na aba Aplicativos, clique no ícone Terminal.

Alt text

2. No Terminal basta entrar no ambiente virtual para executar o npm. O comando npm é reconhecido assim que entra na pasta de seu aplicativo, ou seja, acesse o diretório onde esta localizado seu aplicativo, como por exemplo:

cd applications/exemplonodeupload  - Local onde esta localizado o aplicativo que foi feito deploy

3. Tambem pode ser acessado o ambiente virtual copiando o caminho que é informado no painel ao lado do nome do aplicativo no sinal de interrogação, como por exemplo:

source ~/nodevenv/exemplonodeupload/bin/activate && cd ~/applications/exemplonodeupload

4. Agora, execute o comando npm install que lerá seu arquivo package.js e recriará o diretório node_modules com as respectivas dependências:

npm install


Iniciando o aplicativo pelo painel

Na aba Aplicativos, você pode iniciar o projeto através do ícone de Start e Stop do aplicativo.

Alt text

Iniciando o aplicativo via terminal SSH

Dentro do diretório virtual do aplicativo, basta digitar o seguinte comando:

pm2 start app.yaml


Exemplo de teste realizado

Com o aplicativo registrado e iniciado corretamente com sucesso, temos o acesso testado e 100% funcional, no qual demonstramos em imagens abaixo:


Alt text
Alt text


PS: Lembrando que este endereço de acesso foi utilizado para testes e acessa-lo no momento não reproduz o uso do aplicativo de teste.

Testes de acesso deve ser realizado com seu domínio e/ou subdomínio de acesso no qual registrou seu aplicativo.


Logs

A aba de Logs apresenta saídas informativas realizadas pelo PM2, assim como erros ou informações que seu aplicativo lançar.