2

我正在尝试使用 php 库phpqrcode创建一个二维码。

我想将文件保存在一个临时文件中,以便以后可以使用它。像这样的东西。

我正在使用 Zend 框架并想使用临时目录。这是我到目前为止所拥有的:

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”......我如何确保他将其保存在我服务器上的临时文件夹中?

4

1 回答 1

2

您的浏览器无法找到该图像,因为它正在与位置“ /Applications/MAMP/htdocs/surveyanyplace/site/public/temptest ”相关的 URL“ http://domain.tld/temptest.png ”中查找它.png ”在您的磁盘上,而不是文件的保存位置(您注意到它是“ /temptest.png ”)。

为了通过您的 Web 服务器 (Apache) 直接提供文件,您必须确保图像文件位于其下DocumentRoot(通常是 Zend Framework 应用程序的“公共”文件夹)

一种方法是创建以下目录:“ /Applications/MAMP/htdocs/surveyanyplace/site/public/qrcodecaches ”并$pngAbsoluteFilePath进行$urlRelativeFilePath如下更改:

$pngAbsoluteFilePath = APPLICATION_PATH . '/../public/qrcodecaches/' . $fileName;
$urlRelativeFilePath = '/qrcodecaches/' . $fileName;

$tempDir可以去掉)

注意:您可能想看看Zend_View_Helper_BaseUrl以便$urlRelativeFilePath在处理子目录中的应用程序时更加便携

于 2013-11-13T22:59:32.060 回答