php - PHP中的唯一和临时文件名?

标签 php

我需要将一些文件转换为 PDF,然后将它们附加到电子邮件中。我在电子邮件方面使用 Pear Mail,这很好(主要是——仍在解决一些问题)但作为其中的一部分,我需要创建临时文件。现在我可以使用 tempnam()函数,但听起来它在文件系统上创建了一个文件,这不是我想要的。

我只想要临时文件系统中的一个名称(使用 sys_get_temp_dir() ),该名称不会与运行同一用户的同一脚本的其他人多次调用脚本发生冲突。

建议?

最佳答案

我过去曾使用 uniqid() 来生成唯一的文件名,但实际上并未创建文件。

$filename = uniqid(rand(), true) . '.pdf';

第一个参数可以是任何你想要的,但我在这里使用了 rand() 让它更加随机。使用设置前缀,可以进一步避免与系统中的其他临时文件发生冲突。

$filename = uniqid('MyApp', true) . '.pdf';

从那里,您只需创建文件。如果所有其他方法都失败了,请将其放入一个 while 循环中并继续生成它,直到你得到一个可以工作的。

while (true) {
 $filename = uniqid('MyApp', true) . '.pdf';
 if (!file_exists(sys_get_temp_dir() . $filename)) break;
}

关于php - PHP中的唯一和临时文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/460164/

相关文章:

javascript - 如何使用 Javascript 和 PHP header 重命名正在下载的文件?

PHP PDO 在搜索中未找到结果时显示消息

PHP session 不存储值

php - get_status() 函数返回 1 而不是 true 或 false,为什么?

php - 从 Wordpress 中删除后删除插件数据

php - Google Analytics API 401 无效凭据

php - 覆盖 WooCommerce 类别列表 Walker 的最佳方法

php - 什么会导致 %5B0%5D 添加到 url

php - 如何在 PHP 命令 (CLI) 中传递 bash 脚本变量值

php - 导出为 CSV 也会导出页面代码