Question

J'utilise meioupload pour télécharger des images dans CakePHP, j'utilise une table appelée « attachement » pour sauvegarder les informations de l'image téléchargée, c'est la structure de ma table de fixation:

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;

Et j'ai actuellement 2 autres tables liées à ce à travers le champ de classe (nom de la table) et foreign_id. Maintenant, ma question est, comment puis-je sauvegarder l'image téléchargée dans un dossier différent pour chaque modèle?

Par exemple: je voudrais sauver mon image de poste dans le dossier « post » et pour sauver mon image de profil dans le dossier « profil »

Mise à jour: dans mon modèle de fixation

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
                )
            )
        )
    )
);

Mise à jour # 2 : Disons que j'ai actuellement 3 tables, "l'attachement" "post" et "profil", celui qui actAs meioupload est "attachement", chaque fois que je télécharger une image par « post » ou « profil », je vais enregistrer les informations d'image dans « l'attachement », foreign_id et champs de classe dans « pièce jointe » est une connexion « attachement » à « post » et « profil ».

Mise à jour # 3: J'ai suivi la suggestion Dunhamzzz sur l'utilisation du comportement à la volée, et venir avec cette solution, et cela fonctionne

.
$this->Attachment->Behaviors->attach(
    'MeioUpload', array(
        'filename' => array(
            'dir' => 'avatars'
        )
    ));

Merci

Était-ce utile?

La solution

La réponse est dans votre MeioUpload, plus précisément l'option « dir », vous pouvez mettre {ModelName} ou {fieldName} pour modifier où le fichier est enregistré. Voici la valeur par défaut dans le comportement lui-même:

dir' => 'uploads{DS}{ModelName}{DS}{fieldName}',

Mise à jour

Afin d'obtenir MeioUpload pour soutenir différents paramètres pour le même modèle, vous pouvez essayer fixation le comportement sur le mouche, ce qui vous permet de modifier les paramètres que vous s'il vous plaît.

par exemple dans vos messages actions

$this->Attachment->Behaviours->attach('MeioUpload', array('dir' => '/uploads/posts/');

Assurez-vous de lire la partie sur les comportements sur les docs, il nous l'espérons vous aider à trouver une solution sur une base par action, par opposition à par modèle qui est livré avec des comportements.

Autres conseils

Voici un exemple pour le tableau de actAs $.

    'MeioUpload' => array(
        'filename' => array(
            'dir' => 'files/banners',
            'create_directory' => false,
            'allowed_mime' => array(
                'image/jpeg',
                'image/pjpeg',
                'image/gif',
                'image/png'
            ),
            'allowed_ext' => array(
                '.jpg',
                '.jpeg',
                '.png',
                '.gif'
            ),
        )
    ),

comme vous pouvez le voir, il y a une clé « dir » que vous pouvez modifier

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top