我正在尝试为注册我的网站的每个用户生成QR码。我将通过电子邮件向他们发送QR码,他们可以使用该QR码进行登录。做一些研究工作,我发现phpqrcode。我尝试了以下行代码,这将QR码图像的名称保存在数据库中,但未将其图像保存到文件夹中。如何将QR图像保存到任何文件夹中(例如:上载)。这样,一旦图像上传到文件夹中,我就可以轻松地将该图像发送给用户。
因此,在提交注册表时,将调用以下控制器,它将保存用户并为该用户生成唯一的QR码。
signupController.php
$user = \Model\User::loadFromPost();
if($user->save()){
$tempDir = $_SERVER['SERVER_NAME'].UPLOAD_PATH . 'qrcodes/';
$codeContents = $user->email;
$fileName = $user->id.md5($codeContents).'.png';
$pngAbsoluteFilePath = $tempDir.$fileName;
if (!file_exists($pngAbsoluteFilePath)) {
QRcode::png($codeContents, $pngAbsoluteFilePath);
$user->qrcode = $fileName;
$user->save();
} else {
echo 'File already generated! We can use this cached file to speed up site on common codes!';
echo '<hr />';
}
}
此处$_SERVER['SERVER_NAME']
是example.local/
(对于本地)和https://www.example.com/
(对于实时服务器),而UPLOAD_PATH
是contents/images/uploads
。上面的代码将QR码图像文件的名称保存在DB中,但没有将QR码图像保存到上载文件夹中。
我们非常感谢您的帮助。谢谢。
答案 0 :(得分:1)
您不能将域作为绝对路径。绝对路径必须是服务器上的路径。 因此,替换
$tempDir = $_SERVER['SERVER_NAME'].UPLOAD_PATH . 'qrcodes/';
路径格式为
$tempDir = __DIR__.DIR_SEPARATOR.UPLOAD_PATH.DIR_SEPARATOR.'qrcodes/';
当然,您需要根据服务器设置来修改路径,但是__ DIR __包含指向当前文件目录的路径。
如果您可以指定正在使用的框架,那么我可以帮助您修改路径。