Bonjour à vous.

J'ai une base de données qui contient des fichiers (données binaires).

Je me suis mis à les extraire, ce qui fonctionne bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
file_put_contents("NouveauFichier.pdf", $Document["doc_file"])
Mais là ou je bloque, c'est sur la vérification du fichier, je voudrais vérifier que tout s'est bien passé.
J'ai donc penser à tester le md5, cela fonctionne pour le fichier mais je n'arrive pas à recuperer le md5 des données binaires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$FichierBDD = md5($Document["doc_file"]); // ne renvoie rien
$FichierHDD = md5_file("NouveauFichier.pdf"); // a883c932e83fb2b56c329316250583fb
J'ai testé plusieurs trucs mais sans réussite...

Avez-vous une idée de comment je pourrais vérifier la bonne écriture du fichier ?

Merci.

PS : C'est une base de données d'un éditeur de logiciel, je ne peux modifier que les lignes.

EDIT :
Après quelques tests :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
print_r($Document);
Array
(
    ...
    [doc_file] => Resource id #2
)
Je ne vois pas comment recuperer le contenu de la ressource... si je l'avais, je pense que je pourrais faire un md5 dessus...


Solution :
Après plusieurs heures, j'ai enfin pigé que c'était un flux...
du coup, il suffit de récupérer les données du flux via stream_get_contents().
donc en gros :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
foreach($Documents as $Index => $Document)
{
$BinaryData = stream_get_contents($Document["doc_file"]);
$NewFile = $Document["doc_name"];
if(file_put_contents($NewFile, $BinaryData)) echo "OK";
else exit("KO");
$FileDB = md5($BinaryData); // e8e1cd4e0aed7458c767e4553e770352
$FileHDD = md5_file($NewFile); // e8e1cd4e0aed7458c767e4553e770352
}