【问题标题】:how to save base64 image decode to public folder in laravel如何将base64图像解码保存到laravel中的公用文件夹
【发布时间】:2019-02-06 08:10:34
【问题描述】:

我得到一个格式为 String base64 的图像,我想将该字符串解码为图像并将其保存到 laravel 的公共文件夹中。

这是我的控制器:

//decode string base64 image to image 
$image = base64_decode($request->input('ttd'));
//create image name
$photo_name = time().'.png';
$destinationPath = public_path('/uploads');
//save image to folder
$image->move($destinationPath, $photo_name);
$img_url = asset('/uploads'.$photo_name);


$data = new Transaction();
$data->transaction_id = $request->input('fa_transaction_id');
$data->user_id = $request->input('userid');
$data->photo_name = $photo_name;
$data->photo_url = $img_url;
$data->save();

当我尝试 echo $image 时,我得到了解码值,对于 $photo_name 我也得到了值,但是当函数运行时我得到了这个错误

Call to a member function move() on string

如何解决这个错误?

【问题讨论】:

  • 这里没有任何类型的“文件”对象可以有move 方法,你有一个字符串,不多也不少。所以你需要自己把那个字符串写到一个文件中。

标签: php laravel laravel-4 php-7


【解决方案1】:
//Controller

use Illuminate\Support\Facades\Storage;

//Inside method

    $image = $request->image;  // your base64 encoded
    $image = str_replace('data:image/png;base64,', '', $image);
    $image = str_replace(' ', '+', $image);
    $imageName = str_random(10) . '.png';

    Storage::disk('local')->put($imageName, base64_decode($image));

另外,请确保您的local 磁盘配置与/config/filesystems.php 中的配置相同

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
    ]

这样,文件将保存在/storage/app/public目录中。

不要忘记写php artisan storage:link 以使该目录中的文件在/public 目录中可用,以便用户可以检索它们。

【讨论】:

    【解决方案2】:

    在数据库中保存图像不是将图像存储在数据库中的推荐方式,原因是内存速度增加,正确的方法是保存指向它的链接。
    无论如何,您可以使用这行代码将您的图像保存在base64 中。
    从您的服务器中的路径而不是从$path 中的链接获取正确的图像。

    <?php
        // Base 64 transform image
        $path = __DIR__ .'/myfolder/myimage.png';
        $type = pathinfo($path, PATHINFO_EXTENSION);
        $data = file_get_contents($path);
        $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
        echo $base64;
    

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 2017-07-26
      • 2018-03-24
      • 1970-01-01
      • 2018-12-20
      • 2020-10-03
      • 2015-01-03
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多