IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Sauvegarder un PDF dans une base de données avec Java


Sujet :

Java

  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Points : 203
    Points
    203
    Par défaut Sauvegarder un PDF dans une base de données avec Java
    Salut les développeurs
    J’ai un souci de sauvegarde de fichier dans une base de donnée postgrsql je ne sais pas comment le faire avec java,j’ai beau cherché et j’ai pas compris
    Pour etre plus précise je veux sauvegarder des fichier pdf dans ma base de donnée sous pgAdminIII pour pouvoir ouvrir ces fichiers sous différentes machine sous un réseau local…
    Je précise je veux sauvegarder le fichier et pas l’URL du fichier
    Merci d’avance pour votre aide précieuse
    Cordialement

  2. #2
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Comment interfaces tu ta base et java? Les fichiers sont insérés manuellement ou par un programme java?
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Points : 203
    Points
    203
    Par défaut
    j'ai pas bien compris votre question je m'excuse
    je me connecte à la base avec ces instructions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String query =null;
    		     	ConnexionBaseDonnees connexion;
    		String UrlBase = "jdbc:postgresql://192.168.1.1:5432/BDD";
     
                            String driver="org.postgresql.Driver";
    			String user = "postgres";
    			String MDP="****";

    et les fichier seront sauvegardés par un programme java tout en passant par un JFileChooser

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Ceci devrait t'aider et répondre a tes attentes http://ricky81.developpez.com/tutoriel/java/jdbc/blob/ (en remplacement "image" par pdf bien entendu puisque ca reste des données binaires).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Insérer des fichiers dans une base n'est pas une super idée je trouve. Autant garder les fichiers sur le disque et mettre une référence dans la base.

    PS: pgAdminIII n'est pas la base, c'est une interface de gestion graphique administrateur. La "base" (ou plutôt SGBD) c'est PostgreSQL
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  6. #6
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Points : 203
    Points
    203
    Par défaut
    Gugelhupf merci pour l'info ,puis je dois stocker le fichier dans la base pour pouvoir y accéder de n'importe quel machine (je suis sous une architecture client serveur ,un client doit pouvoir ouvrir un pdf quelque soit son emplacement réel)

    wax78: je suis justemebt tombée sur un article du genre merci bcp de me l'avoir passé,j'essaye en tout cas avec et je passerai en résolu des que ça marche avec moi

  7. #7
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Ce n'est pas une raison pour stocker un fichier dans un SGBD (et encore moins dans du PostgreSQL).

    D'après ce que tu me dis je décèle un problème de sécurité lié à ton architecture, car ton SGBD accepte des requêtes venant de n'importe quelle machine. Si tu veux exposer des fichiers à travers le réseau tu peux utiliser service basé sur HTTP au lieu de JDBC.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    Ce n'est pas une raison pour stocker un fichier dans un SGBD (et encore moins dans du PostgreSQL)..
    Il est vrai que souvent pour certaines raisons il est déconseillé de faire un stockage de masse ainsi en database. Evidement c'est moins pratique pour coder car il faut garder les liens intègre de chaque cotés.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Ou alors il faut se tourner vers un truc orienté fichier comme JCR (Modeshape, Jackrabbit,...), du moins si tu as beaucoup de fichier à stocker.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  10. #10
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Ou un DFS (Distributed File System) comme Hadoop (HDFS).
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  11. #11
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Points : 203
    Points
    203
    Par défaut
    c'est simple mon application est installé sur plusieurs machine (clients) et la base est dans le serveur... si une machine A sauvegarde un fichier et que la machine B veut le voir elle peut le faire(c important) c'est pourquoi je dois stocker le fichier dans la base .... je galère en tous cas

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ce qu'on essaie de te dire c'est qu'il n'est pas normal à la base que la machine A et la machine B aient accès direct à la base, pour des raisons de sécurité. Avec un accès direct à la base, l'utilisateur sur A peux joyeysement tapper un delete from taTable....
    Ce qu'il faut c'est que tu développe une interface type web (REST) pour récupérer ces fichiers et les autres données et que dans cette interface, tu implémente ta sécurité, ce qui te permettra de donnée un login différent à chaque utilisateur.

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    ça me fait doucement rigoler, ça ne dérange personne que l'application A est accès aux données de la base mais ça dérange quand il s'agit de documents sauvegardés en DB

    Personnellement, j'utilise très souvent la base de données pour sauvegarder des documents liés à des enregistrements (DB).
    Le gros avantage, c'est qu'on peut utiliser l'intégrité référentielle pour gérer la suppression cascade de ces documents.
    On n'a pas le souci d'un déplacement des fichiers sur le disque dur sans avoir pris la peine de modifier toutes les références dans les champs de la table qui les associe...
    Bref, hormis un coût supérieur du stockage DB par rapport au stockage disque (avec de très gros volumes), il n'y presque que des avantages à utiliser une DB.

    Ensuite, il faudrait savoir de quel type d'application il s'agit. C'est une application web ou un client java autonome (Swing) ?
    La DB peut-être embarqué sur le PC client ou il s'agit forcément d'une connexion distante ?

    Pour l'application web, dans tous les cas la connexion est gérée par le serveur d'application, il n'y a donc aucun problème de sécurité.
    Pour une application autonome, à part en RMI, l'url de connexion est forcément exposée mais bon, à moins d'utiliser une compte / mot de passe générique, d'un point de vue sécurité, ça reste correcte.

    Si la base de données est toujours distante, ça suppose que l'application ne fonctionne pas sans réseau. Donc, on pourrait imaginer partager les documents par un serveur dédié plutôt que la base (pour ceux que ça dérange )
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Personnellement, j'utilise très souvent la base de données pour sauvegarder des documents liés à des enregistrements (DB).
    Le gros avantage, c'est qu'on peut utiliser l'intégrité référentielle pour gérer la suppression cascade de ces documents.
    On n'a pas le souci d'un déplacement des fichiers sur le disque dur sans avoir pris la peine de modifier toutes les références dans les champs de la table qui les associe...
    Bref, hormis un coût supérieur du stockage DB par rapport au stockage disque (avec de très gros volumes), il n'y presque que des avantages à utiliser une DB.
    Ouais ce que tu dis est parfaitement vrai. Mais dans certains cas, hébergeur de la DB fait des backup régulier et il n'aime pas trop les gros volume (véridique).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Ouais ce que tu dis est parfaitement vrai. Mais dans certains cas, hébergeur de la DB fait des backup régulier et il n'aime pas trop les gros volume (véridique).
    Il est vrai qu'on peut avoir ce genre de contrainte externe, ou une limitation du volume DB aussi, mais c'est un autre problème.
    Certes, il faut en tenir compte pour faire le choix d'architecture... mais dans l'absolu, hors contrainte externe, la DB est un excellent choix à mon avis.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Points : 203
    Points
    203
    Par défaut
    ey les développeurs pourquoi vous me dites que mon application n'est pas sécurisé et que chaque machine a accés directe a la base? non une machine a ne peut effectuer aucun delete dans une table :o ,je ne pense pas avoir un pb de sécurité et j'ai bien défini les droit d'accés de chaque utilisateur... mais vous pouvez m'expliquer pourquoi vous dites que y a accés directe à la base ??

    OButterlin vous me comprenez mieux que les autres mon application est un client java autonome ,elle est installés sur les different poste et la base se trouve dans le serveur ,on y accéde pour avoir les différents donnée y a t il des pb de sécurité?? puis je vais voir avec la technique dont vous avez parlé...

    merci a vous tous de m'avoir donné de votre temps

  17. #17
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par selmagsi Voir le message
    mon application est un client java autonome ,elle est installés sur les different poste et la base se trouve dans le serveur ,on y accéde pour avoir les différents donnée y a t il des pb de sécurité??
    Un problème de sécurité est toujours envisageable, ça dépend de ce qui a été mis en place.

    Si par exemple chaque utilisateur utilise un profil / mot de passe qui lui est propre et que c'est ce compte qui est utilisé pour la base de données, il n'y a pas de problème particulier.

    Si par contre, l'application embarque (dans un fichier de propriétés par exemple) le profil / mot de passe utilisé pour les connexions base de données, il y a un risque. Une personne mal intentionnée peut utiliser ces informations pour "pourrir" la DB voir la supprimer...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Points : 203
    Points
    203
    Par défaut
    non pas de probléme de sécurité,mtn je vais enregistrer les fichier dans la base ,et je vois que ça se fait qu'avec le preparedStatement je trouve du mal a le comprendre ,mais ça va
    merci pour votre aide

  19. #19
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Disons que la question qu'on peux se poser c'est comment tu gère, au niveau des sécurités de la DB, que l'utilisateur A peut supprimer la ligne X mais ne peux pas supprimer la ligne Y. Comment tu l'empeche de visionner une document auquel il n'est pas censé avoir accès. Comment tu gère l'audit pour savoir qui est l'andouille qui a posté 50 DVD dans la db? Pas avec postgresql en tout cas, la sécurité par row et toujours au stade de développement en cours chez eux.
    C'est ça qu'on essaie de te faire comprendre. Il faut imaginer avec une application desktop qui accède directement à la base de données et l'utilisateur peux accéder directement à la base en contournant ton programme et donc seule les règles dans ton SGBD régissent ce que peuvent faire les utilisateurs. C'est parce que ce genre de sécurité est très dur à implémenter au niveau des SGBD (sauf peut être avec certains DBA haut de gamme) qu'en général on a recours à la gestion de cette sécurité à travers un webservice qu'on peux customizer aux petits oignons.

    Voilà pour l'apparté. Pour le reste, si tu veux stocker un fichier, c'est dans un blob mais visiblement tu as déjà trouvé.


    Obutterlin: je suis assez d'accord avec toi, je me pose en généra pas la question, ca part dans un blob comme ça tout est au même endroit. Mais il est vrai que ça plait pas aux DBA. Ca pose problème avec les transactions logs qui sont souvent limité en taille. (Faut déjà modifier des milliers de lignes avec une requete pour faire déborder un log de 1G, mais il suffit d'un blob de 2G pour le foutre en l'air), c'est la galère pour les backups incrémentiels et c'est une données non relationnel (on ne peux utiliser aucun opérateur relationnel sur un blob).

  20. #20
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    c'est une données non relationnel (on ne peux utiliser aucun opérateur relationnel sur un blob).
    Que veux-tu dire par donnée non relationnelle ?

    Nous utilisons une base DB2/400 et en fonction du type d'objet large défini, on a accès à plus ou moins de possibilités (BLOB, CLOB, DBCLOB).
    Par exemple, une recherche sur le contenu de CLOB est tout à fait possible et même performante.

    Pour les problématiques de sauvegarde, rien n'empêche de mettre les tables contenant les LOBs dans une bibliothèque séparée.

    Maintenant, il y a des limites aussi, par exemple sur la taille du contenu... pour cette base, la limite est de 15Mo par LOB (il semble qu'une évolution à 2Gb soit envisagée).
    Bref, en fonction des contraintes, il faut choisir la meilleure solution
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. stocker des fichiers dans une base de données avec java
    Par dali0802 dans le forum Général Java
    Réponses: 4
    Dernier message: 08/04/2014, 17h21
  2. Importer un fichier pdf dans une base de donnée sqlserver
    Par kadiato dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/03/2009, 14h00
  3. [TCPDF] Enregistrement du fichier PDF dans une base de données
    Par Mumux dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 03/03/2009, 11h45
  4. gérer des pdf dans une base de données
    Par marion5515 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 28/04/2008, 15h40
  5. Jtable pb ouverture d'un pdf dans une base de donnée
    Par fredo1314 dans le forum Composants
    Réponses: 11
    Dernier message: 11/07/2006, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo