要将上传的文件附加到电子邮件中,请使用getClientOriginalName()函数,并且在收到的电子邮件中,文件名始终是基本名,没有扩展名。
我使用在https://hotexamples.com/site/redirect?url=https%3A%2F%2Fgithub.com%2Falexander-schranz%2Fsulu-website-user-bundle中找到的代码 我尝试了多种方式来编写原始名称的搜索,但发现总是相同的基本名称 我的功能是:
public function send($from, $to, $sujet, $body, $attachments = [])
{
$message = new \Swift_Message($sujet, $body);
$message->setFrom($from);
$message->setTo($to);
if (count($attachments) > 0) {
foreach ($attachments as $file) {
switch ($file) {
...
case $file instanceof UploadedFile:
$nomfic = $file->getClientOriginalName();
break;
}
$message->attach(\Swift_Attachment::fromPath($path),$nomfic);
附件转储的开头是:
0 => UploadedFile {#16 ▼
-test: false
-originalName: "etiquettes.pdf"
-mimeType: "application/pdf"
-error: 0
path: "/tmp"
filename: "php4Koz9N"
basename: "php4Koz9N"
pathname: "/tmp/php4Koz9N"
我希望使用“ etiquettes.pdf”而不是“ php4Koz9N”!
我该怎么办?
答案 0 :(得分:1)
getClientOriginalName
在浏览器中返回名称上传的文件(警告!这是不安全的)。实际文件位于/tmp/phpXXXXX
中。
所以,您的代码可能是...
<?php
$attach = \Swift_Attachment::fromPath($uploadedfile->getRealPath(), $uploadedfile->getMimeType());
$attach->setFilename($uploadedfile->getClientOriginalName()); # Only if you rely in your client. That is, never!
$message->attach($attach);