2010-05-20 8 views
0

J'ai besoin de télécharger l'image dans le tableau ainsi que dans le dossier. S'il vous plaît aidez-moi, comment je vais enregistrer l'image dans le dossier et la base de données. veuillez décrire la méthode.comment enregistrer l'image dans cakephp

Merci Manish

Répondre

2

Vous pouvez le faire "comme d'habitude" en PHP. Je l'ai fait il y a quelques jours comme celui-ci:

$path = "/img/avatars/"; 
$dir = getcwd().$path; 
$avatarFile = "$dir$id.png"; 

if (isset($this->data['User']['avatar']) && $this->data['User']['avatar']['error'] == 0) { 
       $avatar = $this->data['User']['avatar']; 
       if (!is_uploaded_file($avatar['tmp_name'])) $this->Utils->panic($avatar); 

       if (in_array($avatar['type'], array('image/jpeg','image/pjpeg','image/png'))) { 

        // load image 
        list($width, $height) = getimagesize($avatar['tmp_name']); 
        $width = $height = min($width, $height); 

        if (in_array($avatar['type'], array('image/jpeg','image/pjpeg'))) 
         $source = imagecreatefromjpeg($avatar['tmp_name']); 
        else 
         $source = imagecreatefrompng($avatar['tmp_name']); 

        // resize 
        $thumb = imagecreatetruecolor(128, 128); 
        imagecopyresized($thumb, $source, 0, 0, 0, 0, 128, 128, $width, $height); 

        // save resized & unlink upload 
        imagepng($thumb, $avatarFile); 

        $success &= true; 
       } else { 
        $this->User->invalidate('avatar', __("Only JPG or PNG accepted.",true)); 
        $success &= false; 
       } 

       unlink($avatar['tmp_name']); // Delete upload in any case 
      } 

Il va même redimensionner pour vous toujours à 128x128, vous pouvez ignorer cela et simplement renommer l'image téléchargée sur le répertoire cible. Google vous aidera également, il n'y a rien de spécifique à Cake pour les téléchargements de fichiers.

Le formulaire de téléchargement:

echo $form->create('User', array(
    'enctype' => 'multipart/form-data', 
    'type' => 'post', 
)); 
echo $form->input('avatar', array('type' => 'file', 'label' => __('Avatar:',true))); 
+0

Informations complémentaires: Les fichiers téléchargés sont principalement stockés dans le système de fichiers, et une référence à elle (nom de fichier) dans le DB. Ne stockez pas les fichiers dans la base de données. Dans mon cas, je n'ai rien stocké dans la base de données, car chaque utilisateur ne peut avoir qu'un seul avatar, donc je viens d'écraser le fichier existant, aucune référence dans la base de données n'est requise. – sibidiba

+0

Merci pour votre réponse chaleureuse ....... je veux télécharger l'image dans le dossier pas dans la base de données.Si vous avez du code s'il vous plaît aidez-moi, actuellement je m en utilisant la version 1.3 de cakephp Merci presque – manish

+0

Presque pourrait copier votre exemple. Merci! – nicojs