Laravel文件存储:如何存储(解码)base64图像?

Per*_*ika 5 php base64 laravel laravel-filesystem laravel-storage

如何使用Laravel的filesytem(文件存储)方法存储base64图像?

例如,我可以像这样解码base64图像:

base64_decode($encoded_image);
Run Code Online (Sandbox Code Playgroud)

但是Laravel的所有文件存储方法都可以接受Illuminate\Http\FileIlluminate\Http\UploadedFile实例。

所以我想我必须将base64图像(或解码的base64图像)转换为Illuminate\Http\FileIlluminate\Http\UploadedFile,但是如何?

Dig*_*ter 13

仅用于put存储编码内容:

Storage::put('file.jpg', $encoded_image);
Run Code Online (Sandbox Code Playgroud)

它所做的只是包装file_put_contents.

然后再读出来:

$data = base64_decode(Storage::get('file.jpg'));
Run Code Online (Sandbox Code Playgroud)

你猜对了,它正在包装file_get_contents.

  • 我们也可以对pdf文件使用base64编码吗? (2认同)

rkj*_*rkj 12

您可以像这样使用 laravel 文件存储上传 base64 图像

    $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));
Run Code Online (Sandbox Code Playgroud)

希望它会帮助你