我正在尝试使用php库phpqrcode创建QR码。
我想将文件保存在临时文件中,以便我可以在以后使用它。类似于this。
我正在使用Zend Framework并希望使用临时目录。这就是我到目前为止所做的:
require_once 'phpqrcode/qrlib.php';
require_once 'phpqrcode/qrconfig.php';
$tempDir = '/temp';
$fileName = 'test'.'.png';
$pngAbsoluteFilePath = $tempDir . $fileName;
$urlRelativeFilePath = '/temp' . $fileName;
// generating
if (!file_exists($pngAbsoluteFilePath)) {
QRcode::png('http://mylink.com/s/'.$quiz_url, $pngAbsoluteFilePath, 'L', 4, 2);
echo 'File generated!';
echo '<hr />';
} else {
echo 'File already generated! We can use this cached file to speed up site on common codes!';
echo '<hr />';
}
echo 'Server PNG File: '.$pngAbsoluteFilePath;
echo '<hr />';
// displaying
echo '<img src="'.$urlRelativeFilePath.'" />';
我的输出显示:
服务器PNG文件:/temptest.png
无法找到的图像。在途中有人可以帮助我吗?
编辑:
当我试图将'/ temp'更改为'/ temp /'时,我收到此警告:
Warning: imagepng(/temp/test.png): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/surveyanyplace/site/library/phpqrcode/qrimage.php on line 43
第二次编辑:
当我查看我的硬盘时,我发现他只是将图像保存在我的根映射上,例如'temptest.png'...我怎样才能确保将它保存在我服务器上的临时文件夹中?
答案 0 :(得分:2)
您的浏览器无法找到该图片,因为它正在网址“http://domain.tld/temptest.png”查找该图片,该网址与“ / Applications / MAMP / htdocs / surveyanyplace / site / public / temptest”相关.png “在您的磁盘上,而不是文件的保存位置(正如您所注意到的那样是” /temptest.png “)。
为了通过您的Web服务器(Apache)直接提供文件,您必须确保图像文件位于DocumentRoot
下(通常是Zend Framework应用程序的“public”文件夹)
一种方法是创建以下目录:“ / Applications / MAMP / htdocs / surveyanyplace / site / public / qrcodecaches ”并更改$pngAbsoluteFilePath
和$urlRelativeFilePath
,如下所示:
$pngAbsoluteFilePath = APPLICATION_PATH . '/../public/qrcodecaches/' . $fileName;
$urlRelativeFilePath = '/qrcodecaches/' . $fileName;
($tempDir
可以删除)
注意:在处理子目录中的应用程序时,您可能需要查看Zend_View_Helper_BaseUrl以使$urlRelativeFilePath
更具可移植性