J'ai envoyé plusieurs images distinctes (déjà vérifiées) au serveur et dans le contrôleur laravel, j'ai ceci :

//...

if ($request->has('images')) {
    $images = [];
    foreach ($request->file('images') as $image){
        $img = new \App\Image;
        $name = Str::slug($validated['name']).'_'.time().'.'.$image->getClientOriginalExtension();
        $folder = '/uploads/images/authors/';
        $image->storeAs($folder, $name, 'public');
        $img->url = $folder.$name;
        array_push($images,$img);
    }

    $author->images()->saveMany($images);
}

//...

Puis je regarde dans le chemin de destination dans le stockage et j'ai trouvé l'une des images répétées plusieurs fois avec des noms différents.

Donc quel est le problème?

-1
Reundo 13 oct. 2020 à 10:58

1 réponse

Meilleure réponse

Rendez votre destination de nom de fichier unique.

if ($request->has('images')) {
    $images = [];
    foreach ($request->file('images') as $image){
        $img = new \App\Image;
        $name = Str::random(8).'_'.Str::slug($image->getClientOriginalName()).'.'.$image->getClientOriginalExtension();

        // Debug:
        logger('Received a file named '.$image->getClientOriginalName().' storing as '.$name);

        $folder = '/uploads/images/authors/';
        $image->storeAs($folder, $name, 'public');
        $img->url = $folder.$name;
        $images[] = $img;
    }

    $author->images()->saveMany($images);
}
1
CodeJunkie 13 oct. 2020 à 08:34