使用file_put_contents()将文件保存到文件夹不起作用

时间:2014-04-07 21:42:04

标签: php imagecreatefrompng

我一直在研究一个动态创建&的小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 . '" />';

奇怪的是:由于/tmp/变量中的$compfile,它既不会在页面上创建也不会渲染图像。当我删除它时,一切都像魅力一样,图像正在同一个文件夹中创建。

不幸的是,我真的希望在/tmp/文件夹中创建图像。在$compfile之前是一个随机生成的文件名,而是名为/tmp/img.png,我可以保存以创建名为img.png的图片并​​将其保存到tmp。< / p>

我在这里缺少什么?

(谢谢你的时间。)

1 个答案:

答案 0 :(得分:2)

因为我认为这是解决方案,所以我将其作为答案发布。

我认为你想要"tmp/" . $a . ".png"而不是"/tmp/" . $a . ".png"。始终使用绝对路径是一种很好的做法,因此:__DIR__ . "/tmp/" . $a . ".png"。这消除了任何困惑。