2010-05-20 2 views

ответ

2

Вы можете сделать это "как обычно" в PHP. Я просто сделал это несколько дней назад, как это:

$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 
      } 

Он даже собирается изменить его для вас всегда 128x128, вы можете пропустить это и просто переименовать загруженное изображение в целевой директории. Google также поможет вам, нет ничего особенного для загрузки файлов.

загрузка форма:

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

Дополнительная информация: в основном загруженные файлы хранятся в файловой системе, и ссылка на него (имя файла) в БД. Не храните файлы в БД. В моем случае я ничего не хранил в БД, потому что у каждого пользователя может быть только один аватар, поэтому я просто перезаписываю существующий файл, никакой ссылки в БД не требуется. – sibidiba

+0

Спасибо за теплый ответ ....... Я хочу загрузить изображение в папку, а не в database.if у вас есть код, пожалуйста, помогите мне, в настоящее время я использую 1.3 версию cakephp Спасибо – manish

+0

Почти мог скопировать ваш пример. Благодаря! – nicojs

Смежные вопросы