Skip to content

CledsonVilanculo/springfile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Springfile

Um programa web para partilha segura de ficheiros localmente em rede local (LAN) utilizando Spring Boot. Permite que múltiplos utilizadores façam upload e acesso a ficheiros através de uma interface intuitiva.

Conteúdo

Sobre

Springfile é uma aplicação web construída com Spring Boot que facilita o compartilhamento de ficheiros em ambiente de rede local. A aplicação funciona como um servidor centralizado onde os utilizadores podem fazer upload de ficheiros e acessar uma listagem de todos os ficheiros disponíveis.

Caso de Uso

Ideal para:

  • Partilha de ficheiros rápida entre computadores na mesma rede
  • Transferência de ficheiros sem necessidade de configurações complexas
  • Ambientes corporativos internos
  • Educação e colaboração em grupo

Funcionalidades

  • Upload de Ficheiros: Suporte para upload de múltiplos ficheiros através da interface web
  • Listagem de Ficheiros: Visualização de todos os ficheiros disponíveis com informações de nome e tamanho
  • Interface Web Responsiva: UI intuitiva e fácil de usar
  • Gestão Automática: Limpeza automática de ficheiros temporários
  • Compatibilidade Cross-Platform: Funciona em Windows, Linux e macOS

🔧 Requisitos do Sistema

Requisitos Mínimos

  • Java 25 ou superior (JDK)
  • Maven 3.6+ (para compilação)
  • 4GB de RAM (recomendado)
  • Espaço em disco: Depende do volume de ficheiros a partilhar

Requisitos de Rede

  • Acesso à mesma rede local (LAN)
  • Porta 1000 disponível (por padrão)
  • Firewall configurado para permitir conexões na porta da aplicação

Dependências

As dependências são geridas automaticamente pelo Maven:

  • Spring Boot 4.0.6 (Framework principal)
  • Spring Boot Web MVC (Servidor web)
  • Thymeleaf (Motor de templates HTML)
  • JSON (org.json) (Processamento de JSON)
  • Spring Boot DevTools (Desenvolvimento)

Como Fazer Build

Pré-requisitos

  1. Verificar se Java 25 está instalado:

    java -version
  2. Verificar se Maven está instalado:

    mvn -version

Passos para Compilar

Windows (CMD/PowerShell)

  1. Navegar até à pasta do projeto:

    cd caminho\para\springfile
  2. Limpar builds anteriores (opcional):

    mvn clean
  3. Compilar o projeto:

    mvn compile
  4. Criar o pacote JAR:

    mvn package

    O ficheiro JAR será criado em: target/springfile-0.0.1-SNAPSHOT.jar

Linux/macOS

cd /caminho/para/springfile

# Limpar e compilar
mvn clean compile

# Criar pacote
mvn package

Build Completo (recomendado)

Para fazer build completo incluindo testes:

mvn clean install

Para fazer build sem executar testes:

mvn clean package -DskipTests

Saída do Build

Após compilação com sucesso, encontrará:

  • target/springfile-0.0.1-SNAPSHOT.jar - Aplicação executável
  • target/springfile-0.0.1-SNAPSHOT-jar-with-dependencies.jar - JAR com todas as dependências

Como Executar

Opção 1: Executar o JAR

java -jar target/springfile-0.0.1-SNAPSHOT.jar

Opção 2: Executar com Maven

mvn spring-boot:run

Opção 3: Executar com Maven durante desenvolvimento

mvn clean spring-boot:run

Aceder à Aplicação

Após iniciar, abra o navegador e aceda a:

http://localhost:1000

Se estiver noutra máquina da rede:

http://<IP_DO_SERVIDOR>:1000

Para encontrar o IP do servidor (Windows):

ipconfig

Para encontrar o IP do servidor (Linux/macOS):

ifconfig
# ou
hostname -I

📁 Estrutura do Projeto

springfile/
├── src/
│   ├── main/
│   │   ├── java/com/cledsonvilanculo/springfile/
│   │   │   ├── App.java                              # Classe principal
│   │   │   ├── SpringfileApplication.java            # Configuração Spring Boot
│   │   │   ├── configuration/
│   │   │   │   └── WebConfig.java                    # Configurações web
│   │   │   ├── controllers/
│   │   │   │   └── HomeController.java               # Controladores da aplicação
│   │   │   └── services/
│   │   │       └── FileManagerService.java           # Serviço de gestão de ficheiros
│   │   └── resources/
│   │       ├── application.properties                # Configurações da aplicação
│   │       ├── static/                               # Ficheiros estáticos
│   │       │   ├── fonts/                            # Fontes
│   │       │   ├── javascript/
│   │       │   │   └── home.js                       # JavaScript frontend
│   │       │   └── style/
│   │       │       └── home.css                      # Estilos CSS
│   │       └── templates/
│   │           └── index.html                        # Template HTML principal
│   └── test/                                         # Testes unitários
├── target/                                           # Artefatos compilados (gerado)
├── pom.xml                                           # Configuração Maven
├── mvnw / mvnw.cmd                                   # Maven Wrapper (para executar sem Maven instalado)
└── README.md                                         # Este ficheiro

🔌 Endpoints da API

GET /

Retorna a página principal da aplicação.

Resposta: HTML da página web

GET /files

Retorna a lista de todos os ficheiros disponíveis em formato JSON.

Resposta:

[
  {
    "nome": "documento.pdf",
    "tamanho": 2048576
  },
  {
    "nome": "imagem.jpg",
    "tamanho": 1024768
  }
]

POST /upload

Faz upload de um ou múltiplos ficheiros.

Parâmetros:

  • files (FormData): Array de ficheiros para fazer upload

Resposta:

true  // Sucesso
false // Erro

Exemplo com curl:

curl -X POST -F "files=@ficheiro.pdf" http://localhost:1000/upload

Configuração

Diretório de Armazenamento

Os ficheiros são armazenados em:

Windows:

C:/springfile/files/

Linux/macOS:

/springfile/files/

Para alterar este caminho, edite FileManagerService.java e altere a variável diretorioDestino.

Porta da Aplicação

Para alterar a porta padrão (1000), edite application.properties:

server.port=1000

Tecnologias Utilizadas

Tecnologia Versão Descrição
Java 25 Linguagem de programação
Spring Boot 4.0.6 Framework web
Maven 3.6+ Gestor de dependências
Thymeleaf Latest Motor de templates HTML
JSON 20260522 Processamento de JSON
HTML5/CSS3 - Frontend
JavaScript - Interatividade frontend

Versão Atual: 1.1