Почему getClientOriginalName () не работает, чтобы получить оригинальное имя загруженного файла? - PullRequest
0 голосов
/ 03 апреля 2019

Чтобы прикрепить загруженные файлы к электронному письму, я использую функцию 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"

Я надеюсь, что вместо "php4Koz9N" будет "etiquettes.pdf" !!

Что я могу сделать?

1 Ответ

1 голос
/ 03 апреля 2019

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);
...