Quel format de données pour insérer un pdf dans un champ BLOB ?

Fermé
Adriano87 Messages postés 15 Date d'inscription jeudi 22 septembre 2016 Statut Membre Dernière intervention 25 avril 2017 - Modifié le 25 avril 2017 à 13:57
Adriano87 Messages postés 15 Date d'inscription jeudi 22 septembre 2016 Statut Membre Dernière intervention 25 avril 2017 - 25 avril 2017 à 18:24
Bonjour,

dans le cadre d'un projet php, il m'est imposé de coder cette opération.
(Pour avoir fait de nombreuses recherches sur les champs blob, je sais que cela n'est pas conseillé mais ce n'est pas moi qui décide.)

J'arrive à récupérer le contenu du champ et à recomposer un pdf valide, mais pour l'opération d'insertion ou update je n'y parviens pas.


Environnement : PHP + SQL SERVER

Voici la fonction qui exécute la requete :
public function updateDocument($idDocument, $content) {
    
    //$req = "UPDATE DOCUMENTS SET BLOB = (SELECT BULKCOLUMN FROM OPENROWSET(BULK 'documents/marge.pdf', SINGLE_BLOB) AS I) WHERE ID_DOCUMENT = $idDocument";
    $req = "UPDATE DOCUMENTS SET BLOB = '$content' WHERE ID_DOCUMENT = $idDocument";

    $res = ConnectionDb::$myPdo->exec($req);
    return $res;
}


Comme vous pouvez voir j'ai testé deux requetes différentes car bulk fonctionnait sous un autre projet en vb.net mais ici c'est différent et cela ne fonctionne pas.
Le fichier se trouve sur le serveur wamp local pour le développement, dans le répertoire du site, et je n'ai pas mis le chemin complet depuis C:\ car il faudrait qu'il soit trouvé quelque soit le type de serveur.

La deuxième requete me parait être la plus indiquée mais je bute sur le format de données à envoyer.
Pour la réception de fichier il s'agit d'une chaine en hexadécimal, mais quand j'effectue l'update avec la nouvelle chaine en hexa, cela stocke simplement une chaine en hexa dans le blob et non un pdf valide.
J'ai cherché et testé différents types mais pas de résultat..

Auriez vous la réponse svp ?
A voir également:

1 réponse

Adriano87 Messages postés 15 Date d'inscription jeudi 22 septembre 2016 Statut Membre Dernière intervention 25 avril 2017 1
25 avril 2017 à 18:24
je m'aperçois que lorsque j'envoie la chaine en hexadecimal dans le blob, le résultat visible avec SQL management studio, est une chaine en décimal alors que les pdf envoyés par mon application VB.net avec openrowset (et valides) affichent une chaine en hexadecimal...

lorsque j'envoie les données sans conversion, à la sortie de la fonction php "file_get_contents" , ça ne fonctionne pas je pense à cause de tous les caractères spéciaux, et si j'essaye de les enlever avec d'autres fonctions le fichier n'est pas bon non plus...

je m'arrache les cheveux ^^
0