Laravel 5

pb d'extension d'image

  • Avatar de Emmanuelveau
    Membre depuis :
    05/12/2018
    Messages :
    9

    Je ne comprends pas pourquoi je recupere l'extension de type tmp....
    Alors que le fichier de base est de type .png

    besoin d'aide ! merci bien :)

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    Salut,

    On peut voir le code ?

  • Avatar de Emmanuelveau
    Membre depuis :
    05/12/2018
    Messages :
    9

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    Pour récupérer l'extension originale il faut utiliser $logo->getClientOriginalExtension().

  • Avatar de Emmanuelveau
    Membre depuis :
    05/12/2018
    Messages :
    9
    public function store(Request $request)
    {

    $logo = $request->file('logo');

    $name = 'test.'.$logo->getClientOriginalExtension();

    $logo->move(public_path('',$name));

    Sport::create($request->all());
    return redirect(route('sport.index'));
    }

    en faisant ca, je pensais que ca aller générer un fichier s'appelant : test.PNG

    Or, il me génere ce fichier : phpF63B.tmp

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    Ca donne quoi ça :

    $logo = $request->file('logo');
    dd($logo->getClientOriginalExtension());
  • Avatar de Emmanuelveau
    Membre depuis :
    05/12/2018
    Messages :
    9

    PNG

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    Utilise ça :

    $name = 'test.'.$logo->getClientOriginalExtension();
    $logo->storeAs('la destination dépend de la config', $name);
  • Avatar de Emmanuelveau
    Membre depuis :
    05/12/2018
    Messages :
    9

    Ca fonctionne mais l'impage ne va pas dans le dossier public.

    public function store(Request $request)
    {

    $logo = $request->file('logo');

    $name = 'test.'.$logo->getClientOriginalExtension();
    $logo->storeAs('', $name);
    //$logo->move(public_path('',$name));

    Sport::create($request->all());
    return redirect(route('sport.index'));
    }

    ca va dans : \storage\app

    Est-ce possible de mettre l'image dans :\public\logo

    bestmomo merci encore ! avec la methode que j'ai utilisé au debut je comprend pas pourquoi il me génére un fichier .tmp....

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    Pour la destination du fichier regarde la documentation sur le file storage.

  • Avatar de Emmanuelveau
    Membre depuis :
    05/12/2018
    Messages :
    9

    OK, merci. tu sais pourquoi la commande suivante me genere un fichier en .tmp

    $logo->move(public_path('',$name));
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    En interne Laravel utilise la méthode rename de PHP. Donc ça pourrait sans doute marcher avec :

    $logo->move(public_path(), $name);
  • Avatar de Emmanuelveau
    Membre depuis :
    05/12/2018
    Messages :
    9

    ooui, mais en utilisant cette commande cela me génére un fichier PHP6d4.tmp

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    Si je regarde le code dans le framework je trouve ça :

    public function move($path, $target)
    {
    return rename($path, $target);
    }

    Donc logiquement ça devrait renommer... mais bon de toute façon il vaut mieux passer par store.

Vous ne pouvez pas répondre à ce sujet.