我正在使用签名板,单击保存后我可以将图像保存在tmp文件夹中。在文件模型中,我创建了saveFile函数
public function saveFile($data) {
$fileInfo = $this->saveTempFile($data);
}
private function saveTempFile($source) {
$extension = $source->file('file')->getClientOriginalExtension();
$dir = rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
$fileName = uniqid() . '_' . time() . '.' . $extension;
$source->file('file')->move($dir, $fileName);
}
当我从文件格式中获取数据时,可以保存。但是在签名板中,我正在使用base64解码并保存文件,如下所示:
public function saveTempFileFromString($data, $ext) {
$tempFilename = uniqid();
$tempFilepath = rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $tempFilename . '.' . $ext;
file_put_contents($tempFilepath, $data);
}
// get base64 data
$img = str_replace('data:image/png;base64,', '', $request->signature);
$img = str_replace(' ', '+', $img);
// decode base64
$data = base64_decode($img);
// save to tmp folder from string
$file = new File;
$fileInfo = $file->saveTempFileFromString($data, 'png');
我如何仅对表单中的文件和base64解码中的文件使用第一个功能?可以这样做吗?