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

Laravel base64 file move into one folder

我有一个带有 base64$data 变量:它是 imagefile

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


我的代码:

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

$image = base64_decode($data);

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


请问有人帮忙吗?

不能$data.

中包含data:URI schemedata:image/png;base64,

您可以使用 explode 函数删除 data:URI scheme,这将 return 一个包含两个元素的数组,然后再使用 base64_decode.

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

按如下方式使用,使用,作为分隔符。示例:

list($dataUriScheme, $data) = explode(',', $data);

或没有list:

$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.";
}

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

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

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

然后您可以像这样通过 Storage facade 保存文件

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

还有其他方法可以实现此目的,但这应该可行

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