Aller au contenu

SpringBootFilesUploader : Séparer les octets et les métadonnées

SpringBootFilesUploader est un backend Kotlin et Spring qui sépare stockage binaire et métadonnées. L’identifiant retourné au client relie ces deux représentations lors du téléchargement.

Application et services
  • Mis à jour
  • Kotlin · 99.52%
  • MIT
Langages du dépôtKotlin 99.52%3

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
Kotlin99.52%68 077
Java0.31%214
Dockerfile0.17%114

GitHub · README · Statistiques de langages

Aperçu

Pourquoi il existe

Microservice Spring Boot en Kotlin avec téléversement multipart en flux et validation d'intégrité.

Cas d’usage

Backend ingestion de fichiers à haut débit.

Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

Références du dépôt

Le dépôt ne fournit pas de guide détaillé pour ces étapes. Commencez par le README et les fichiers commentés ci-dessus.

Documentation source

1 documents lus parmi 1 candidats.

Fonctions et composants 2

Validation HTTP
FilesController reçoit un document multipart, vérifie l’extension et déclare des rôles modérateur/admin pour l’envoi. Le contrôle de taille est commenté. Le téléchargement utilise un identifiant, le type et la taille conservés.
Coordination du stockage
FilesService crée un chemin fondé sur un UUID et envoie les octets à FileRepository. Il conserve ensuite FileModel par FilesMongo. La lecture cherche d’abord les métadonnées, puis utilise le chemin pour récupérer les octets.

Architecture

Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.

Contexte système Contexte
  1. Envoi multipart
  2. FilesController
  3. FilesService
  4. Stockage binaire FileRepository
  5. Métadonnées FilesMongo
  6. Réponse avec identifiant

Liens vérifiés dans le dépôt.

Mermaid Diagramme interactif (chargement à l’ouverture)

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de SpringBootFilesUploader
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR
  n0["Envoi multipart"]
  n1["FilesController"]
  n2["FilesService"]
  n3["Stockage binaire FileRepository"]
  n4["Métadonnées FilesMongo"]
  n5["Réponse avec identifiant"]
  n0 --> n1
  n1 --> n2
  n2 --> n3
  n2 --> n4
  n4 --> n5
Version texte du diagramme
  • Envoi multipart → FilesController
  • FilesController → FilesService
  • FilesService → Stockage binaire FileRepository
  • FilesService → Métadonnées FilesMongo
  • Métadonnées FilesMongo → Réponse avec identifiant
Suivre un parcours dans le code

Suivez addDocument dans FilesService: les octets sont écrits avant les métadonnées. Si la seconde écriture échoue, la première peut laisser un fichier orphelin. Une version de production nécessite un nettoyage ou une stratégie de cohérence explicite.

Types et structure des fichiers

81 types déclarés, dont 12 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class t26c1a3dc5125["FilesController"] {
  addDocument()
  getDocument()
}
class te841f2b44b30["FilesService"] {
  addDocument()
  getDocumentData()
  getDocumentInfo()
  getExtType()
}
class td9932b4881df["Application"] {
}
class t710fa2aa2d64["DockerConfig"] {
  dockerClient()
}
class ta335e3882e82["GeneralConfig"] {
  messageSource()
}
class tdcc31183d80f["S3Config"] {
  awsClient()
}
class t303a3f345023["SpringDocOpenAPI"] {
  customOpenAPI()
}
class t6d6a2852fe9e["WebClientConfig"] {
  httpClient()
}
class tbb8a532c7ab9["WebSecurityConfig"] {
  authenticationJwtTokenFilter()
  configure()
  authenticationManagerBean()
  passwordEncoder()
}
class t2d4df6b4ca46["AuthController"] {
  authenticateUser()
  registerUser()
  registerAdmin()
}
class tcac10360aa2f["CaddyController"] {
  getPing()
}
class t0f5aed8fe95a["DockerComposeController"] {
}
class b807ef8f8f99e["WebSecurityConfigurerAdapter"] {
  <<unresolved_base>>
}
tbb8a532c7ab9 ..> b807ef8f8f99e : declared base

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

Index des types

Référence

60 / 60 fichiers admissibles lus (70 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

Carte des fichiers
flowchart TD
  root["SpringBootFilesUploader"]
  f0["build.gradle.kts"]
  root --> f0
  f1["src/main/kotlin/com/api/project/controller/FilesController.kt"]
  root --> f1
  f2["src/main/kotlin/com/api/project/service/FilesService.kt"]
  root --> f2
  f3["README.md"]
  root --> f3
  f4["docker-compose.yml"]
  root --> f4
  f5["src/main/kotlin/com/api/project/Application.kt"]
  root --> f5
  f6["src/test/kotlin/com/api/project/ApplicationTests.kt"]
  root --> f6
  f7["src/main/kotlin/com/api/project/config/DockerConfig.kt"]
  root --> f7
  f8["src/main/kotlin/com/api/project/config/GeneralConfig.kt"]
  root --> f8
  f9["src/main/kotlin/com/api/project/config/S3Config.kt"]
  root --> f9
  f10["src/main/kotlin/com/api/project/config/SpringDocOpenAPI.kt"]
  root --> f10
  f11["src/main/kotlin/com/api/project/config/WebClientConfig.kt"]
  root --> f11
  f12["src/main/kotlin/com/api/project/constants/Constants.kt"]
  root --> f12
  f13["src/main/kotlin/com/api/project/controller/AuthController.kt"]
  root --> f13
  f14["src/main/kotlin/com/api/project/controller/CaddyController.kt"]
  root --> f14
  f15["src/main/kotlin/com/api/project/controller/DockerComposeController.java"]
  root --> f15

Fichiers à lire 3

Références