【发布时间】:2019-03-07 12:52:56
【问题描述】:
我正在使用 Laravel 实现一个简单的应用程序。 只是想知道,当我以电子邮件文本发送二维码时,是否需要先将二维码存储在数据库中才能为图像指定文件传递??
如果答案是肯定的,有没有什么方法可以在不使用表单标签的情况下存储二维码?
【问题讨论】:
我正在使用 Laravel 实现一个简单的应用程序。 只是想知道,当我以电子邮件文本发送二维码时,是否需要先将二维码存储在数据库中才能为图像指定文件传递??
如果答案是肯定的,有没有什么方法可以在不使用表单标签的情况下存储二维码?
【问题讨论】:
我认为您不需要存储实际的二维码。
二维码只是表示一串字符的一种方式。通常人们会将 URL 放入二维码中。
您可能只需将源数据存储到您的数据库中,然后从数据中生成 QR。
如果数据是 URL,使用 QR 的设备应该能够链接到 URL,这会将其带回您的应用程序。您可以将参数放在 URL 的末尾,以允许您的应用从您的数据库中为该用户检索数据。
您甚至可以使用签名 URL,这样最终用户就无法更改它。
这是我发现可能有帮助的一篇文章。它不是 laravel 特有的,但有助于理解 QR 码。 https://www.kerneldev.com/2018/09/07/qr-codes-in-laravel-complete-guide/
【讨论】:
您可以将图像转换为 base64,然后将其存储为文本。 有关如何编码的更多信息,请访问http://php.net/manual/en/function.base64-encode.php 和解码http://php.net/manual/en/function.base64-decode.php
示例编码:
$file_encoded = base64_encode(file_get_contents($file)); //this is stringed data. save this in database.
示例解码:
$file_encoded = base64_decode ($file_encoded); //this will be file.
【讨论】:
您还可以将图像存储为 BLOB,它作为 base64 编码图像的开销较小,并且不会被索引为可搜索的字符串。
将二进制文件的链接存储在数据库中而不是数据本身可能更好。
【讨论】: