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.
Langages du dépôtKotlin 99.52%3
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Kotlin | 68 077 | |
| Java | 214 | |
| Dockerfile | 114 |
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.
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.
- Envoi multipart
- FilesController
- FilesService
- Stockage binaire FileRepository
- Métadonnées FilesMongo
- 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.

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
FilesController(class) ·src/main/kotlin/com/api/project/controller/FilesController.kt:18Méthodes dans l’aperçu :
addDocument, getDocument.FilesService(class) ·src/main/kotlin/com/api/project/service/FilesService.kt:11Méthodes dans l’aperçu :
addDocument, getDocumentData, getDocumentInfo, getExtType.Application(class) ·src/main/kotlin/com/api/project/Application.kt:6DockerConfig(class) ·src/main/kotlin/com/api/project/config/DockerConfig.kt:15Méthodes dans l’aperçu :
dockerClient.GeneralConfig(class) ·src/main/kotlin/com/api/project/config/GeneralConfig.kt:8Méthodes dans l’aperçu :
messageSource.S3Config(class) ·src/main/kotlin/com/api/project/config/S3Config.kt:14Méthodes dans l’aperçu :
awsClient.SpringDocOpenAPI(class) ·src/main/kotlin/com/api/project/config/SpringDocOpenAPI.kt:11Méthodes dans l’aperçu :
customOpenAPI.WebClientConfig(class) ·src/main/kotlin/com/api/project/config/WebClientConfig.kt:9Méthodes dans l’aperçu :
httpClient.WebSecurityConfig(class) ·src/main/kotlin/com/api/project/config/security/SecurityConf.kt:38Méthodes dans l’aperçu :
authenticationJwtTokenFilter, configure, authenticationManagerBean, passwordEncoder.Bases déclarées :
WebSecurityConfigurerAdapter.AuthController(class) ·src/main/kotlin/com/api/project/controller/AuthController.kt:27Méthodes dans l’aperçu :
authenticateUser, registerUser, registerAdmin.CaddyController(class) ·src/main/kotlin/com/api/project/controller/CaddyController.kt:10Méthodes dans l’aperçu :
getPing.DockerComposeController(class) ·src/main/kotlin/com/api/project/controller/DockerComposeController.java:3
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