2009-12-22 5 views
2

Je ne l'ai pas fait beaucoup de fichiers L'ajout Symfony à ce point et je suis en train de comprendre comment le faire dans 1.2+Comment télécharger un fichier dans symfony 1.2 sans utiliser une forme spécifique

je peux obtenir les dossiers soumis à l'action et les récupérer via:

$files = $request->getFiles(); 

Comment puis-je puis enregistrez le fichier dans le système de fichiers? Je ne vois aucune documentation en plus de l'ancien code déprécié 1.0.

On dirait que cela a été déplacé d'une certaine manière dans le système de formulaire, mais je n'ai pas de spécifique pour cette page unique que j'ai qui ne fait que télécharger quelques fichiers.

Comment enregistrer ces fichiers sur un disque.

Répondre

5

Si vous ne cherchez pas à télécharger les fichiers à l'aide des formulaires symfony alors le suivant Coded travaillera également:

foreach($request->getFiles() as $file) 
{ 
    move_uploaded_file($file["tmp_name"], $directory . "/" . $file['name']); 
} 
+0

bien sûr, c'est le "php" régulier pour le faire, ça marchera quel que soit le framework utilisé – danii

+0

Ouais, je suppose que c'est ce que je cherchais si je n'avais pas de classe à utilisation. – Failpunk

3

Dans l'action, après vous liez les params à la forme:

$file = $your_form->getValue('your_file_field'); 

    $filename = $file->getOriginalName(); //or whatever name 
    $extension = $file->getExtension($file->getOriginalExtension()); 
    $file->save(sfConfig::get('sf_upload_dir').'/'.$filename.$extension); 

BTW, vous trouverez la documentation de symfony 1.2 dans les formulaires Symfony correspondants dans le livre d'action: Chapter 02 file upload

ps: N'oubliez pas d'ajouter manuellement le enctype="multipart/form-data" à votre formulaire html!

+0

Merci pour le lien vers la documentation – Failpunk

+0

Vérifiez ce lien, il semble être brisé – Failpunk

+0

lien fixe, il semble y avoir un problème avec la page de symfony et les liens externes (il n'aime pas la partie «www» dans le url ...) – danii

1

Merci ami. Je cherche ce code depuis 2 jours. Je suis nouveau sur php même si j'essaye symfony. Mon code pour symfony. De la même manière, utilisez le code $filetype pour vérifier le type de fichier téléchargé. Vérifiez la référence du fichier php. Pour les types de fichiers. Appréciez ..

1

Si vous cherchez toujours pourquoi vous ne pouvez pas accéder au fichier téléchargé en utilisant $ request-> getFiles(), c'est peut-être parce que vous avez oublié d'ajouter enctype="multipart/form-data".

En fait, vous devriez avoir une forme comme ceci:

<form enctype="multipart/form-data" action="/yourdestination" method="post"> 
    <input type="file" name="somedummyfile"/> 
    <input type="submit" value="Send"/> 
</form> 

Et votre action devrait faire quelque chose comme ceci:

$dummyfile = $request->getFiles('somedummyfile'); 
echo $dummyfile['tmp_name']; // Current filepath 
echo $dummyfile['name']; // filename 

Hope it helps!

Questions connexes