一旦生成QR码图像如何保存到服务器文件夹? -PHP

时间:2018-08-21 20:20:04

标签: php

我正在尝试为注册我的网站的每个用户生成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_PATHcontents/images/uploads。上面的代码将QR码图像文件的名称保存在DB中,但没有将QR码图像保存到上载文件夹中。

我们非常感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

您不能将域作为绝对路径。绝对路径必须是服务器上的路径。 因此,替换

$tempDir = $_SERVER['SERVER_NAME'].UPLOAD_PATH . 'qrcodes/';

路径格式为

$tempDir = __DIR__.DIR_SEPARATOR.UPLOAD_PATH.DIR_SEPARATOR.'qrcodes/';

当然,您需要根据服务器设置来修改路径,但是__ DIR __包含指向当前文件目录的路径。

如果您可以指定正在使用的框架,那么我可以帮助您修改路径。