phpqrcode - 将文件保存到临时目录

时间:2013-11-13 11:03:04

标签: php zend-framework qr-code temporary temp

我正在尝试使用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'...我怎样才能确保将它保存在我服务器上的临时文件夹中?

1 个答案:

答案 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更具可移植性