0
votes

Upload de l'image dans la base de données MySQL ne fonctionne pas

J'ai lu de nombreux articles sur Stackoverflow et Google concernant le téléchargement de fichier et montrez directement dans / depuis la colonne MySQL Blob. Je n'ai pas besoin de télécharger le fichier nulle part, car un seul fichier est impliqué dans mon projet complet et c'est le fichier logo à mettre à jour par l'utilisateur. Bien que je voulais faire les choses avec la bibliothèque de téléchargement de CodeDigniter, mais je ne pouvais pas compléter le code, donc j'essayais une solution de PHP simple, mais cela n'a pas fonctionné non plus.

ci-dessous est mon code. P>

Code pour le formulaire de téléchargement: strong> p>

<img src="data:image/png;base64,iVBORw0KGgpcMFwwXDAN ....... v6/IDhCwtLWDE56vdo6CwCC07dMeva1dhgIGnEBikg7xODG0Pq+m61z8bC4Vqpzxpq6d8BhQK7Q1+rte/oyhK61mIAoGRznxWpiYmb8jaleunKEotrSaXy1Xb1lnxXhXvSAGgKtXBetZJOQEAIQkBAQAhCQEAIQkBACEJA8P7xP2GoiDrA7B2BXDBcMFwwXDBJRU5ErkJggg==">


5 commentaires

Je devine juste parce que je n'ai jamais enregistré une image dans une base de données, mais si vous appliquez addSlashes () dans le contenu de l'image, les données ne seraient pas corrompues pour être des données d'image car Vous l'avez modifié?


Toute erreur étant renvoyée par PHP ou MySQL?


@Spacephoenix Juste une icône qui apparaît dans le navigateur lorsque l'image n'est pas rendue.


@DNFER J'ai eu la solution de réponse marquée et l'a utilisé, Stackoverflow.com/Questtions/17717506/...


@dnfer j'ai vu addslashes () utilisé partout, mais votre hypothèse fonctionne. Le logo est affiché lorsque je supprime ajoutslashes ()


4 Réponses :


-2
votes
<?php
include_once 'dbconn.php';
$image = $_FILE['image'];
$name = $image['name'];
$tmpname = $image['tmp_name'];
$imgdestination = '../img/'.$name;
move_uploaded_file($tmpname, $imgdestination);
?>

3 commentaires

S'il vous plaît lire attentivement la description. J'ai mentionné que je n'ai pas besoin de télécharger le fichier, je n'ai besoin de l'enregistrer dans la base de données uniquement.


Qu'est-ce que vous devez enregistrer dans la base de données?


Image dans le champ BLOB



0
votes

Vous devez enregistrer une image comme base64_encode dans la base de données. Changez votre code comme ligne ci-dessous lorsque vous téléchargez: xxx

et lorsque vous devez afficher l'image, il vous suffit de mettre du contenu. Pas besoin d'encoder à nouveau. Comme ci-dessous: xxx

espérons que cela vous aide.


0 commentaires

0
votes

Après avoir essayé les suggestions de @Dnfer, j'ai essayé d'utiliser des déchets Stripslash en affichant l'image. Les choses fonctionnaient bien. XXX

Mais j'ai une question. Quelque part où j'ai lu: "Alors que je lisais ceci, j'ai vu que le problème était le problème était des barreaux (). Puisque les données sont binaires, cela pourrait contenir des caractères arbitraires égaux à des barres de barres afin qu'elle les élimine de sorte qu'elle les supprimera."

cela sera un problème? Et mes données sont-elles toujours sûres après avoir extraire les barres obliques?


0 commentaires

0
votes

Réponse courte: strong>

modifier p> xxx pré>

à p> xxx pré>

Réponse longue: strong> p>

Lorsque vous appliquez addSlashes () code>, les données binaires de l'image changent lorsqu'elle contient une ou plusieurs devis unique ('), double citation ( "), backslash (\) ou nul (l'octet nul). Il ajoute une barre oblique inverse avant ces caractères. P>

Ceci est probablement fait pour éviter Injection SQL forte> à l'époque des déclarations préparées n'existaient pas ni rarement utilisée. Par exemple: p> xxx pré>

Ces jours-ci, pas utiliser des déclarations préparées est une mauvaise pratique et je suppose que votre bibliothèque de base de données l'utilise également à la ligne suivante: P>

$this->db->update("company", array('logo'=>$imgContent));


3 commentaires

Toujours comme au 3ème bloc de code: echo ' Mais le problème est peu importe quelle approche que j'utilise, logo est visible dans la page Web, mais pas dans le PDF créé via la bibliothèque MPDF.


Le sujet consistait à stocker des données d'image dans une base de données et à l'afficher à l'aide de la balise HTML IMG. Pas sur la bibliothèque MPDF. La question est répondue depuis que l'image montre dans la page Web. Pour les problèmes concernant la bibliothèque MPDF, vous devez poser une nouvelle question.