2011-01-28 5 views
0


Est-ce que quelqu'un a déjà utilisé CakePHP Media Plugin en conjonction avec SWFUpload ou n'importe quel uploader flash/ajax? Je ne trouve pas de documentation ou d'exemples de code là-dessus.Plugin CakePHP Media et SWFUpload

Toutes idées/suggestions sont les bienvenues.

Merci,
m^e

Répondre

0

J'ai réussi à accomplir quelque chose le long de ces lignes en utilisant CakePHP 1.3, Uploadify (http://www.uploadify.com/) et le plug-in Uploader de Miles Johnson (http: //www.milesj.me/resources/script/uploader-plugin).

Il a fallu un peu de fiddling pour que tout fonctionne correctement et vous aurez envie de lire la documentation de chacune des pièces impliquées pour que tout fonctionne comme vous le souhaitez, mais c'est ainsi que j'ai réussi it:

À votre avis: Incluez les bibliothèques JavaScript nécessaires: jQuery, SWFObject et Uploadify. Insérez l'élément <input> que le script Uploadify remplacera par l'uploader Flash. Puis insérez le code jQuery pour spécifier les paramètres de téléchargement (détails dans les documents de téléchargement). Lors de la définition de l'URL pour la publication de l'envoi, veillez à inclure l'ID de session en tant qu'argument. Dans mon exemple, je l'ai passé comme premier argument (voir le Controller beforeFilter ci-dessous pour voir ce qu'il en est fait).

Dans votre contrôleur: Incluez le composant Uploader du plug-in Uploader. Ajouter quelque chose comme ceci à la beforeFilter:

function beforeFilter() { 
    if ($this->action == 'upload') { 
     $this->Session->id($this->params['pass'][0]); 
     $this->Session->start(); 
    } 
    parent::beforeFilter(); 
} 

Créer une action pour faire les téléchargements. Le mien ressemble à ceci:

function upload(){ 
    Configure::write('debug', 0); 
    $this->autoRender = false; 
     if (isset($this->params['form']['Filedata'])) { 
    $this->data['Upload'] = $this->params['form']; 
    $data = $this->Uploader->upload('Filedata'); 
    } 
} 

C'est l'essence de celui-ci.

Il y a cependant quelques pièges.

Je passe l'ID de session au contrôleur et démarre une nouvelle session avec cet ID car la publication de la publication dans l'URL peut provenir d'un autre agent utilisateur, ce qui peut provoquer des erreurs. Vous pouvez contourner ce problème en transmettant l'ID de session du navigateur à l'action de téléchargement et en démarrant une nouvelle session avec cet ID dans le beforeFilter comme indiqué ci-dessus.

De plus, le composant Uploader a intégré la validation du type MIME. Cependant, l'uploader Flash que Uploadify fournit envoie chaque fichier avec un type de type MIME "uploadé par fichier", quel que soit le type MIME du fichier original. J'ai contourné ceci en désactivant la validation directement dans le code du plugin Uploader. Cela signifie que si vous voulez valider les mimetypes des fichiers téléchargés, vous devrez l'ajouter ailleurs.

Désolé que ce soit si vague, mais je l'ai fait il y a un certain temps et je ne me souviens pas de tous les détails. Cependant, j'espère que cela vous aidera à vous orienter dans la bonne direction.