File uploader #85

Closed
opened 2024-03-09 18:33:11 +01:00 by tonitch · 5 comments
Owner

On doit avoir un système pour envoyer certains fichiers.

dans l'idée je verais bien un : POST /upload/{type} avec type etant par example, "profilePicture", "Quotes", ...
Ces fichiers sont alors mis dans le système de fichiers, le chemin de ce fichier est stoqué dans la bdd et le chemin (static) est renvoyé dans la requettes.

Ainsi tout les champs nécéssitants des fichiers (photos, documents, ...) seront stockées sous forme de string/ chemin static dans la db et pourrons être référencé facilement par le frontend pour télécharger/afficher.

Le fait de stocker dans la db le chemin permet également de garder une référence des fichiers "utilisés". Dans le sens ou, si un utilisateur change de photo par example on pourrais simplement supprimer l'entrée dans la db et puis on peut faire un système de purge (comme pour les tokens) qui s'éxécuterais tout les semaine par example pour supprimer tout les fichiers qui ne sont pas référencés...

Au niveau frontend je vais certainement faire une fonction consumeFile("url_recu_de_la_db") qui permeterais soit d'afficher ou de télécharger le fichier par le client.

Si ça vous semble raisonable... let's roll with that!

On doit avoir un système pour envoyer certains fichiers. dans l'idée je verais bien un : `POST /upload/{type}` avec type etant par example, "profilePicture", "Quotes", ... Ces fichiers sont alors mis dans le système de fichiers, le chemin de ce fichier est stoqué dans la bdd et le chemin (static) est renvoyé dans la requettes. Ainsi tout les champs nécéssitants des fichiers (photos, documents, ...) seront stockées sous forme de string/ chemin static dans la db et pourrons être référencé facilement par le frontend pour télécharger/afficher. Le fait de stocker dans la db le chemin permet également de garder une référence des fichiers "utilisés". Dans le sens ou, si un utilisateur change de photo par example on pourrais simplement supprimer l'entrée dans la db et puis on peut faire un système de purge (comme pour les tokens) qui s'éxécuterais tout les semaine par example pour supprimer tout les fichiers qui ne sont pas référencés... Au niveau frontend je vais certainement faire une fonction consumeFile("url_recu_de_la_db") qui permeterais soit d'afficher ou de télécharger le fichier par le client. Si ça vous semble raisonable... let's roll with that!
tonitch added the
TODO
Proposition
back
labels 2024-03-09 18:33:11 +01:00
tonitch added this to the Clyde project 2024-03-09 18:33:11 +01:00
Maxime self-assigned this 2024-03-10 10:37:52 +01:00
Owner

LGTM je fais une implémentation en backend mtn et tu me dis ce que t'en penses

LGTM je fais une implémentation en backend mtn et tu me dis ce que t'en penses
Author
Owner

Je viens d'y penser, mais si on fait une table files, alors on peut très bien faire des fk pour les autres tables quand ils ont besoin d'un fichier. pour éviter d'avoir plusieurs fois les réfs. @LeoMoulin

Je viens d'y penser, mais si on fait une table files, alors on peut très bien faire des fk pour les autres tables quand ils ont besoin d'un fichier. pour éviter d'avoir plusieurs fois les réfs. @LeoMoulin
Owner

m'as l'air d'être une meilleure idée en terme de storage mais jsp pour le retrieval

m'as l'air d'être une meilleure idée en terme de storage mais jsp pour le retrieval
Author
Owner

bhat tu as genre User : cess -> file: name ----FileSystem---> "nameofthefile.pdf"
et ça va chercher dans genre /attachments/nameofthefile.pdf
Faudrait juste que le nameofthefile soit genre un uuid pour éviter qu'ils soient prédictibles et puis c'est bon.

ça permet de facilement référencer un fichier dans les tables et puis d'avoir une table contenant tout les fichiers utilisés. Comme ça si un fichier n'est plus utilisé c'est facile de le supprimer quoi

Quand y'a un fichier nécéssaire, un champ upload envoie le fichier sur genre POST /upload qui retourne l'id du fichier et cet id ets utilisé dans l'autre POST (genre POST /user {cess: FileId} et ainsi dans la db tu as l'id de l'entrée du fichier dans la table des fichiers qui contient l'emplacement du fichier dans le fs ^^

ça me semble être une approche très flexible et ainsi on peut la réutiliser à volontée pour toutes nos extensions
(genre pour mes messages par example c'est cool)

bhat tu as genre User : cess -> file: name ----FileSystem---> "nameofthefile.pdf" et ça va chercher dans genre <website>/attachments/nameofthefile.pdf Faudrait juste que le nameofthefile soit genre un uuid pour éviter qu'ils soient prédictibles et puis c'est bon. ça permet de facilement référencer un fichier dans les tables et puis d'avoir une table contenant tout les fichiers utilisés. Comme ça si un fichier n'est plus utilisé c'est facile de le supprimer quoi Quand y'a un fichier nécéssaire, un champ upload envoie le fichier sur genre `POST /upload` qui retourne l'id du fichier et cet id ets utilisé dans l'autre POST (genre `POST /user {cess: FileId}` et ainsi dans la db tu as l'id de l'entrée du fichier dans la table des fichiers qui contient l'emplacement du fichier dans le fs ^^ ça me semble être une approche très flexible et ainsi on peut la réutiliser à volontée pour toutes nos extensions (genre pour mes messages par example c'est cool)
Owner

done ?

done ?
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: PGL/Clyde#85
No description provided.