gpt4 book ai didi

php -/tmp(或其他类似文件夹位置)是否有 symfony 值?

转载 作者:行者123 更新时间:2023-12-03 20:17:16 24 4
gpt4 key购买 nike

我有一个 Symfony 3.3 应用程序,它成功地发送了一封带有附件的电子邮件。相关函数如下所示:

private function sendEmail($data)
{
$vgmsContactMail = self::contactMail;
$mailer = $this->get('mailer');
/* @var $uploadedFile UploadedFile */
$uploadedFile = $data["attachment"];
$extension = $uploadedFile->guessExtension();
if(!in_array($extension, ['pdf','rtf']) ){
die('Please upload a .pdf or .rtf file.');
}
$newFilePath = '/tmp';
$newFileName = 'temporary' . rand(0,10000) . '.rtf';
$uploadedFile->move($newFilePath, $newFileName);
$attachment = \Swift_Attachment::fromPath('/tmp/' . $newFileName);
$message = \Swift_Message::newInstance("VGMS Contact Form: ". $data["subject"])
->setFrom(array($vgmsContactMail => "Message by ".$data["name"]))
->setTo(array(
$vgmsContactMail => $vgmsContactMail
))
->setBody($data["message"]."<br>ContactMail :".$data["email"])
->attach($attachment)
;
return $mailer->send($message);
}

我的问题是硬编码 /tmp目录感觉很脆弱。 有没有更优雅的方法来获取存储临时文件的目录的路径?

最佳答案

要知道实际的 tmp 文件夹,您可以使用此功能

sys_get_temp_dir();

来源: http://php.net/manual/fr/function.sys-get-temp-dir.php

你可以这样使用它: $newFileName = tempnam(sys_get_temp_dir(), 'myAppNamespace');并且您将拥有带有随机和 uniq 名称的完整文件路径。

没有链接到您的第一个问题,但我注意到您的代码几乎没有问题: $newFileName = 'temporary' . rand(0,10000) . '.rtf';
您的代码上有硬编码的扩展类型。但是您之前的检查是关于 pdf/rtf 扩展名的。

我的解决方案也将解决这个问题。

关于php -/tmp(或其他类似文件夹位置)是否有 symfony 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49294984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com