Laravel base64 文件移动到一个文件夹
Laravel base64 file move into one folder
我有一个带有 base64
的 $data
变量:它是 image 或 file。
我想将此文件移动到一个文件夹中...但它已作为空文件移动。
我的代码:
$file_name = Input::get('file_name');
$image = base64_decode($data);
file_put_contents(public_path('/user_attachments/').$file_name, $image);
请问有人帮忙吗?
您不能在$data
.
中包含data:URI scheme
(data: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
我有一个带有 base64
的 $data
变量:它是 image 或 file。
我想将此文件移动到一个文件夹中...但它已作为空文件移动。
我的代码:
$file_name = Input::get('file_name');
$image = base64_decode($data);
file_put_contents(public_path('/user_attachments/').$file_name, $image);
请问有人帮忙吗?
您不能在$data
.
data:URI scheme
(data: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