Я использую meioupload для загрузки изображений в cakePHP, я использую таблицу под названием «вложение» для сохранения информации о загруженном изображении, это структура моей таблицы вложений:
CREATE TABLE IF NOT EXISTS `attachments` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`class` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`foreign_id` bigint(20) unsigned NOT NULL,
`filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`dir` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`mimetype` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`filesize` bigint(20) DEFAULT NULL,
`height` bigint(20) DEFAULT NULL,
`width` bigint(20) DEFAULT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
И в настоящее время у меня есть еще 2 таблицы, связанные с этим через поле класса (имя таблицы) и Foreign_id. Теперь мой вопрос: как я могу сохранить загруженное изображение в другую папку для каждой модели?
Например: я хотел бы сохранить изображение моего сообщения в папке «сообщение» и сохранить изображение моего профиля в папке «профиль».
ОБНОВЛЕНИЕ: в моей модели прикрепления
public $actsAs = array(
'MeioUpload' => array(
'filename' => array(
'dir' => 'post', #i set the default folder as 'post' at the moment
'create_directory' => true,
'allowed_mime' => array(
'image/jpeg',
'image/pjpeg',
'image/png'
),
'allowed_ext' => array(
'.jpg',
'.jpeg',
'.png'
),
'thumbsizes' => array(
'large' => array(
'width' => 500,
'height' => 500
),
'small' => array(
'width' => 100,
'height' => 100
)
)
)
)
);
ОБНОВЛЕНИЕ № 2: скажем, что в настоящее время у меня есть 3 таблицы: «вложение», «сообщение» и «профиль», та, которая действует как meioupload, является «вложением», каждый раз, когда я загружаю изображение через «сообщение». " или "профиль", я сохраню информацию об изображении в "приложении", поля external_id и class в "приложении" - это те, которые соединяют "приложение" с "публикацией" и "профилем".
ОБНОВЛЕНИЕ № 3: я последовал предложению Dunhamzzz по использованию поведения на лету и придумал это решение, и оно работает.
$this->Attachment->Behaviors->attach(
'MeioUpload', array(
'filename' => array(
'dir' => 'avatars'
)
));
Спасибо