web-dev-qa-db-fra.com

Laravel Stockage de fichiers: comment stocker une image base64 (décodée)?

Comment stocker une image base64 en utilisant les méthodes Laravel's filesytem (File Storage) ?

Par exemple, je peux décoder une image base64 comme ceci:

base64_decode($encoded_image);

mais toutes les méthodes de Laravel pour le stockage de fichiers peuvent accepter soit un Illuminate\Http\File ou Illuminate\Http\UploadedFile exemple.

Donc je suppose que je devrais convertir l'image base64 (ou l'image base64 décodée) en Illuminate\Http\File ou Illuminate\Http\UploadedFile, mais comment?

6
PeraMika

Utilisez simplement put pour stocker le contenu encodé:

Storage::put('file.jpg', $encoded_image);

Tout ce qu'il fait est d'envelopper file_put_contents.

Puis pour le relire:

$data = base64_decode(Storage::get('file.jpg'));

Ce qui, vous le devinez, enveloppe file_get_contents.

3
DigitalDrifter

Vous pouvez télécharger votre image base64 en utilisant laravel File Storage comme ceci

    $base64_image = $request->input('base64_image'); // your base64 encoded     
    @list($type, $file_data) = explode(';', $base64_image);
    @list(, $file_data) = explode(',', $file_data); 
    $imageName = str_random(10).'.'.'png';   
    Storage::disk('local')->put($imageName, base64_decode($file_data));

J'espère que cela vous aidera

5
rkj