Загрузка основного изображения CakePHP 2.0 - PullRequest
0 голосов
/ 07 января 2012

Я пытаюсь загрузить аватар, связанный с записью пользователя, но я не уверен, как это сделать, я думаю, что я должен использовать File и Folder Utility, но я не уверен, какЯ должен использовать его.

У меня есть поле avatar в моей таблице users db, куда я должен вставить путь аватара моих пользователей, потому что аватар уникален для каждого пользователя, которого я думал использовать avatar столбец прямо внутри таблицы users, это правильный путь или я должен сделать что-то конкретное для изображений?

Я написал это, но это не будет работать:

// in my user edit view where I upload the image (avatar)
$file = new File ($this->request->data['User']['avatar']); // error here
$ext = $file->ext();
$filename = $this->User->id.$ext;
$image = $file->read();
$file->close();
$file = new File (WWW_ROOT.'img/avatar/'.$filename, true, 777);
$file->write($image);
$file->close();
$this->request->data['User']['avatar'] = $filename;

этот код возвращает ошибку в первой строке, о которой я сообщил, где я создаю File, передавая массив $this->request->data['User']['avatar']:

Warning (2): dirname() expects parameter 1 to be string, array given
Warning (2): is_dir() expects parameter 1 to be string, array given
Warning (2): basename() expects parameter 1 to be string, array given

Существует ли какой-нибудь рабочий пример для CakePHP 2.0?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2012

Я перепробовал многие из этих плагинов, загруженных с носителя / изображения, для CakePHP 2. Я нашел лучший из них - CakeMedia (http://grafikart.github.com/CakePHP-Media).. Он работает хорошо, за исключением того факта, что вам нужен работающий компонент Auth.

Он также хорошо работает с tinymce (уже сконфигурирован для вас с помощью включенного помощника.

вам следует взглянуть на код. Он может вам помочь.

1 голос
/ 07 июля 2012

У меня была похожая проблема, потому что я не добавил tmp_name для загрузки. В конце концов я выбрал обычный код PHP:

move_uploaded_file ($this->request->data['Model']['picture']['tmp_name'], WWW_ROOT.'/img/pictures/'.$new_file_name.'.jpg');
$this->request->data['Model']['picture_path'] = '/img/pictures/'.$new_file_name.'.jpg';
$this->Model->save($this->request->data['Model']);

Вы когда-нибудь решали вышеуказанный вопрос, не используя плагин и не используя возможности Cake File? Было бы интересно и полезно посмотреть.

...