使用.pdf扩展名创建一个临时文件php tempnam
问题描述:
使用tempname时可以创建.pdf文件扩展名吗?我需要用一个使用tempname创建的文件发送电子邮件。 (我可以发送文件,但我需要.pdf扩展名)使用.pdf扩展名创建一个临时文件php tempnam
答
您可以在多部分邮件中的MIME标题中为文件名指定任何名称。
+1
您可以为不习惯它的读者添加Mime标头样本,也不需要谷歌了解它。 – 2014-04-15 15:20:43
答
不,这不适用于tempnam。您必须为此编写自己的函数,例如使用当前时间。这里的问题是避免竞争条件,但都不可能通过包括PID的文件名,这样可以解决:
do {
$filename = rand();
$filename .= '.'. str_replace(' ', '.', microtime());
$filename .= '.'. getmypid();
$filename .= '.pdf';
} while(file_exists($filename));
如果目录不同机器之间共享的PID不能保证是唯一的。在这种情况下,还包括当前机器的主机名(由gethostname返回)。
答
我使用临时唯一名称这样的功能:
function tempnam_sfx ($path, $suffix) {
if(!is_dir($path)){
mkdir($path, 0777, true);
}
do {
$file = $path . DIRECTORY_SEPARATOR . mt_rand() . $suffix;
} while (file_exists($file));
return $file;
}
答
$tempname = tempnam('', 'report_');
rename($tempname, $tempname .= '.pdf');
var_dump($tempname, is_file($tempname));
这是否真的有意义吗?如果电子邮件不包含任何其他附件,为什么不将它命名为“attachment.pdf”或与电子邮件内容有关的意义? – 2011-04-22 18:47:31
我想使用临时位置来存储文件(不在我的应用程序目录中)。如果你能想到另一种方式让我知道。 – 2011-04-22 22:07:50
@Chris但是为什么临时文件需要扩展名为.PDF? – 2011-04-22 22:13:20