如何获取临时文件路径?

2022-08-30 14:51:23

我知道你可以用tmpfile创建一个临时文件,然后写入它,并在不再需要它时关闭它。但是我遇到的问题是我需要文件的绝对路径,如下所示:

"/var/www/html/lolo/myfile.xml"

我能以某种方式获得路径,即使有其他功能或技巧吗?

编辑:

我希望能够从数据库下载文件,但没有

$fh = fopen("/var/www/html/myfile.xml", 'w') or die("no no");
fwrite($fh, $fileData);
fclose($fh); 

因为如果我这样做,如果更多的人尝试在同一时间下载相同的文件,则有可能重叠。还是我错了?

编辑2:

也许我可以像那样生成唯一(uniqID)文件名,然后删除它们。或者,如果很多人正在下载,这对服务器来说可能太消耗了?


答案 1

有很多方法可以实现这一目标,这里有一个

<?php 
// Create a temp file in the temporary 
// files directory using sys_get_temp_dir()
$temp_file = tempnam(sys_get_temp_dir(), 'MyFileName');
echo $temp_file;
?>

上面的示例将输出类似于:/var/tmp/MyFileNameX322.tmp


答案 2

我知道你可以用tmpfile创建一个临时文件

这是一个良好的开端,像这样的东西可以做到:

$fileHandleResource = tmpfile();

我能以某种方式获得路径,即使有其他功能或技巧吗?

是的:

$metaData = stream_get_meta_data($fileHandleResource);
$filepath = $metaData['uri'];

这种方法的好处是,可以让PHP为这个临时文件选择一个好的地方和名称,根据您的需要,这最终可能是一件好事或一件坏事。但是,如果您还没有特定原因来选择自己的目录和文件名,这是最简单的方法。

引用:

http://us.php.net/manual/en/function.stream-get-meta-data.php

使用文件句柄获取文件名(或删除文件)


推荐