我有$data
变量和base64
:它是图像或文件。
我想将此文件移动到一个文件夹中...但它被移动为空文件。
我的代码:
$file_name = Input::get('file_name');
$image = base64_decode($data);
file_put_contents(public_path('/user_attachments/').$file_name, $image);
请有人帮忙吗?
答案 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);
还有其他方法可以实现这一点,但这应该有效