Bonjour
J'ai un champ fichier dans mon formulaire et j'ai indiqué où doivent aller se stocker les fichiers téléchargés sur le serveur. Mais bizarrement les fichiers sont stockés complètement ailleurs.
Voici où vont se stocker les fichiers : C:\Users\Anouchka\AppData\Local\Temp\php7547.tmp

Voici mon fichier services.yaml qui montre où les fichiers devraient être stockés cad dans : public/uploads/images.

Voici mon services.yaml :

# Put parameters here that don't need to change on each machine where the app is deployed# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
    locale: 'fr'
app_locales: en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN
    app.notifications.email_sender: anonymous@example.com
    images_directory: '%kernel.project_dir%/public/uploads/images'

services:

    _defaults:
            autowire: true      # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
public: false       # Allows optimizing the container by removing unused services; this also means
                                # fetching services directly from the container via $container->get() won't work.
                                # The best practice is to be explicit about your dependencies anyway.

bind:               # defines the scalar arguments once and apply them to any service defined/created in this file
$locales: '%app_locales%'
#$defaultLocale: '%locale%'
                #$emailSender: '%app.notifications.email_sender%'

twig.extension.intl:
            class: Twig_Extensions_Extension_Intl
            tags:
- { name: twig.extension }
    # default configuration for services in *this* file

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
App\:
        resource: '../src/*'
exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'

# controllers are imported separately to make sure services can be injected
    # as action arguments even if you don't extend any base controller class
App\Controller\:
        resource: '../src/Controller'
tags: ['controller.service_arguments']

    # add more service definitions when explicit configuration is needed
    # please note that last definitions always *replace* previous ones
App\Service\FileUploader:
        arguments:
            $targetDirectory: '%images_directory%'

1 réponse


C:\Users\Anouchka\AppData\Local\Temp\php7547.tmp

C'est l'emplacement ou les fichiers vont être préalablement uploadés. Ensuite il faut se charger des les déplacer dans ton target directory. Donc mauvaise config ou erreur dans ton code. Je te conseille de relire la doc Symfony pour tout vérifier. C'est vraiment bien expliqué...

En l'occurence, la partie importante dans la doc c'est ça :

// moves the file to the directory where brochures are stored
            $file->move(
                $this->getParameter('brochures_directory'),
                $fileName
            );

et aussi ça :

# config/services.yaml

# ...
parameters:
    brochures_directory: '%kernel.project_dir%/public/uploads/brochures'

Source : https://symfony.com/doc/current/controller/upload_file.html

Au passage, pour info, tu peux utiliser gaufrette qui offre une couche d'abstraction de ton fileSystem (ou dropbox, AWS, etc.) et qui permet une portabilité plus simple si tu veux déporter ton stockage plus tard. KNP Labs propose un très bon bundle Symfony pour cela.