Laravel base64文件移动到一个文件夹中

时间:2016-11-08 07:25:38

标签: laravel base64

我有$data变量和base64:它是图像文件

我想将此文件移动到一个文件夹中...但它被移动为空文件。


我的代码:

$file_name = Input::get('file_name');

$image = base64_decode($data);

file_put_contents(public_path('/user_attachments/').$file_name, $image);


请有人帮忙吗?

2 个答案:

答案 0 :(得分:5)

无法data:URI scheme内包含data:image/png;base64,$data)。

您可以使用data:URI scheme函数删除explode,该函数将返回包含两个元素的数组,并在使用base64_decode之前。

  • $data[0] =>数据:URI方案。
  • $data[1] =>你的数据。

使用,作为分隔符

,使用如下
$data = explode(',', $data)[1];


然后尝试下一个代码:

$fileName = Input::get('file_name');
$fileStream = fopen(public_path() . '/user_attachments/' . $fileName , "wb"); 

fwrite($fileStream, base64_decode($data)); 
fclose($fileStream); 

//////////// The final filename.
$fileName= Input::get('file_name');

//////////// Upload path
$uploadPath = public_path() . "/user_attachments/" . $fileName;

//////////// Decode your image/file
$data = base64_decode($data);

//////////// Upload the decoded file/image
if(file_put_contents($uploadPath , $data)){
    echo "Success!";
}else{
    echo "Unable to save the file.";
}

答案 1 :(得分:0)

要使用Laravel方式",您应该使用内置的Storage / Flysystem驱动程序。

创建一个"磁盘"在config/filesystems.php磁盘阵列中,类似这样的

'user_attachments' => [
    'driver' => 'local',
    'root' => public_path('user_attachments')
];

然后您可以像这样

保存文件

Storage::disk('user_attachments')->put('filename.txt', $contents);

还有其他方法可以实现这一点,但这应该有效

在此处阅读更多https://laravel.com/docs/5.3/filesystem