Extraire fichier de DBB et le vérifier
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:
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:
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:
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:
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
} |