Ceci est un projet laravel et je souhaite télécharger plusieurs images sur le serveur aws s3

C'est le code lame.

<div class="col-12">
<span class="btn btn-success fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<span>Add Multiple image...</span>
<input type="file" multiple="multiple" accept="image/*" class="imageupload1" name="uploadfile2[]" /><br/>
</span>
</div>

Et ce sont le code du contrôleur.

        if($request->hasfile($file_name))
        {
            $file = $request->file($file_name);
            $originalFileName = time().$file->getClientOriginalName();
            $filePath = $defaultPath.'/'.$originalFileName;

            $this->deleteimage($profile->thumb_img);
            $this->uploadimage($request, $file_name, $filePath);
        }

    public function uploadimage($request, $file_name, $defaultPath){

        $this->validate($request, [$file_name => 'required|image']);

        if($request->hasfile($file_name))
        {
            $file = $request->file($file_name);
            
            \Storage::disk('s3')->put($defaultPath, file_get_contents($file));
        }
    }
0
user13292268 23 août 2020 à 11:10

2 réponses

Meilleure réponse

Essayez comme ci-dessous. Et laisse moi savoir.

if($request->hasfile($multi_file_name))
    $files = $request->file($multi_file_name);

    foreach($files as $imgfile) {
        $originalFileName = time().$imgfile->getClientOriginalName();
        $multi_filePath = $multi_defaultPath.'/'.$originalFileName;
        \Storage::disk('s3')->put($multi_filePath, file_get_contents($imgfile));
    }
}
0
Dmitriy Gusev 23 août 2020 à 09:25

Étant donné que la requête arrive en tant que tableau, vous devez parcourir chaque itération.


foreach ( $request->file($file_name) as $file )
{
     $originalFileName = time().$file->getClientOriginalName();
     $filePath = $defaultPath.'/'.$originalFileName;

     $this->deleteimage($profile->thumb_img);
     $this->uploadimage($request, $file_name, $filePath);       
}
           

0
Brinley 23 août 2020 à 08:38