2010-11-21 5 views
1

Je veux utiliser uploadify avec Symfony 1.4, mais jusqu'à présent, je ne pouvais pas.Symfony et uploader

Uploadify charge correctement, je choisis mes fichiers, il dit que les fichiers ont été téléchargés avec succès, mais ils ne sont nulle part.

(je fais cela sur localhost)

Est-ce qu'il ya quelqu'un qui a rencontré ce problème avant?

Merci, Tom

$file = $request->getParameter('file'); 
    $filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension()); 
    $file->save(sfConfig::get('sf_upload_dir').'/'.$filename); 
+0

Vous devez montrer un peu de code. Vous savez que uploadify fonctionne différemment d'un téléchargement de fichier normal? Que chaque fichier est transmis à un script côté serveur et ne fait pas partie du formulaire soumis? –

+0

J'ai oublié le code, désolé. J'ai essayé avec le simple move_uploaded_file, mais cela n'a pas fonctionné – Thomas

+0

Je vous recommande d'utiliser le grand ['swWidgetFormUploadify'] (https://github.com/rande/swFormExtraPlugin/blob/95bda9a7456665dc4910ea06ec8126ccfd82cb45/lib/widgets/swWidgetFormUploadify.class. php) à partir de 'swFormExtraPlugin'. Il y a aussi le validateur. – j0k

Répondre

0

Je ne peux que deviner que c'est parce que vous essayez de télécharger lorsque vous êtes connecté à un système, mais le flash ne hérite pas de données de session du navigateur, cela signifie que vous serez toujours aucune permission n'a été accordée à la fonction à laquelle vous essayez d'accéder puisque symfony pense que vous n'êtes pas connecté.

Vous devez donc définir manuellement les variables pour que Flash utilise la même session de connexion que le navigateur: jQuery Code (needs être dans un fichier php, ne fonctionnera pas dans un fichier js):

$('#file_upload').uploadify({ 
    .... config here 
    'scriptData': { '<?php echo session_name() ?>': '<?php echo session_id() ?>' } 
}); 
1

dans ma session de projet stockées dans les cookies pour que je trouve une solution par créer supplémentaire de classe de stockage de session

class MySessionStorage extends sfSessionStorage 
{ 
    public function initialize($options = null) 
    { 
    $request = sfContext::getInstance()->getRequest(); 

    // work-around for uploadify 
    if ($request->getParameter('uploadify') == "onUpload") 
    { 
     $sessionName = $options["session_name"]; 
     if($value = $request->getParameter($sessionName)) 
     { 
     session_name($sessionName); 
     session_id($value); 
     } 
    } 

    parent::initialize($options); 
    } 
} 

a ensuite changé factories.yml à

all: 
    storage: 
    class: MySessionStorage 

puis PARAM "Uploader" sera comme ceci

uploader  : '<?php echo url_for("attachments/upload?uploadify=onUpload&" . session_name() . "=" . session_id(), true)?>',