comment stocker et récupérer des images dans la base de données à l'aide de CodeIgniter
Je suis en utilisant un serveur WAMP, et je veux télécharger des images dans la base de données à l'aide de l'IC.La variable d'image dans la base de données est de type de données blob. Ma question est comme suit:
1) Comment stocker l'image à la place du nom de fichier et quels types de données dois-je utiliser?
2) Comment faire pour récupérer des images à partir de la DB?
Mon code du contrôleur:
<?php class Image_control extends CI_Controller{
function index()
{
//$this->load->view('image_view');
//$this->Image_model->do_upload();
$data['images']=$this->Image_model->get_images();
$this->load->view('image_view',$data);
}
function do_upload()
{
$config = array(
'allowed_types' => 'jpg|png|bmp',
'upload_path'=>'./images1/',
'max_size'=>2000
);
$this->load->library('upload',$config);
if (!$this->upload->do_upload()) {
$errors[]=array('error'=>$this->upload->display_errors());
$this->load->view('image_view',$errors);
}
$image_path=$this->upload->data();
$file_name=$image_path['file_name'];
$config = array(
'a_name' => $this->input->post('a_name'),
'a_details'=>$this->input->post('a_info'),
'a_photo'=>$file_name
);
$insert=$this->db->insert('animalstore',$config);
return $insert;
}
}
?>
Mon code du modèle:
<?php class Image_model extends CI_Model {
function get_images()
{
$query = $this->db->get('animalstore');
if($query->num_rows > 0 )
{
foreach($query->result() as $rows)
{
$data[] = $rows;
}
return $data;
}
}
}
?>
Et enfin voici le code de mon point de vue:
<?php
echo form_open_multipart('image_control/do_upload');
echo form_input('a_name','Animal Name');
echo form_input('a_info','Animal Information');
echo form_upload('userfile');
echo form_submit('upload','Upload');
echo form_close();
?>
<?php foreach ($images as $image):?>
<h1><?php echo $image->a_name;?></h1>
<h1><?php echo $image->a_details;?></h1>
<img src = "/<?php//echo ltrim($image->a_photo, '/'); ?>" >
<img src="http://localhost/ci_test/images1/<?php echo $image->a_photo;?>"/>
<img src="<?php //echo sprintf("images/%s", $image['screenshot']);?>" />
<h1><?php//echo $image->a_photo;?></h1>
<?php endforeach; ?>
J'ai essayé de le résoudre de différentes manières et cherché pour mon problème mais je ne trouve pas de réponse appropriée.
- Ne pas stocker des images dans la base de données stackoverflow.com/questions/6472233/can-i-store-images-in-mysql
Vous devez vous connecter pour publier un commentaire.
NE PAS STOCKER LES FICHIERS À L'INTÉRIEUR DE LA BASE DE DONNÉES!!!
C'est toujours une mauvaise idée de la conception. Stocker les fichiers dans le système de fichiers et il suffit de stocker les noms de fichier et de pointer vers le fichier, il va vous faire économiser beaucoup de maux de tête à l'avenir.
Dans votre modèle:
où 12 est l'id de ligne.
essayer ce code
modèles de code
contrôleur de code
vue
Voici un petit quelque chose que j'utilise pour les petites vignettes au format PNG.
Ceux-ci sont stockés dans une table appelée "coreg" dans un champ nommé "IMAGE". Le champ type est LONGBLOB. Chaque téléchargement remplace la précédente image. Dans l'application réelle du fichier est affiché comme un iframe:
VUE de FICHIER POUR le TÉLÉCHARGEMENT (il est mieux d'utiliser le CI forme spécifique des balises bien sûr, mais vous voyez l'idée)
add_image.php:
CONTRÔLEUR POUR AFFICHER L'IMAGE
Plus élégante serait d'utiliser une vue à la place de l'écho et de déplacer la DB logique dans le modèle, mais cela montre la fonctionnalité de mieux à mon humble avis:
media.php
CONTRÔLEUR DE CHARGEMENT DE L'IMAGE: