我一直在研究一个小的PHP脚本,该脚本从base64字符串动态创建图像并将其保存在文件夹中tmp
(已经存在!)。这是我save.php
文件。
// get base-64 string from form
$filteredData = substr($_POST['img_val'], strpos($_POST['img_val'], ",")+1);
// decode string
$unencodedData = base64_decode($filteredData);
// create unique filename
$a = uniqid();
// name, location and file extension
$compfile = '/tmp/' . $a . '.png';
// save image
file_put_contents($compfile, $unencodedData);
// print image
echo '<img src="' . $compfile . '" />';
奇怪的是:它既不会在页面上创建也不会呈现图像,因为我的$compfile
变量中的/tmp/
。当我删除它时,一切都像一个魅力,并且图像是在同一文件夹中创建的。
不幸的是,我真的希望在/tmp/
文件夹中创建图像。在$compfile
之前是一个随机生成的文件名,而是被称为/tmp/img.png
我能够保存以创建名为img.png
的图像并将其保存到tmp
。
我在这里错过了什么?
(谢谢你的时间。
由于我想这是解决方案,因此将其作为答案发布。
我认为你想要"tmp/" . $a . ".png"
而不是"/tmp/" . $a . ".png"
.最好始终使用绝对路径,因此:__DIR__ . "/tmp/" . $a . ".png"
.这消除了任何困惑。