Symfony2 输入文件

Symfony2 input file

我正在使用 symfony 2.5 & Php 5.3(旧服务器)

我只想在我的表单中添加一个输入文件来显示他的路径名,如 (C://pathto/filename)

我已经在我的 class Advert.php 中添加了一个属性:

  /**
 * @ORM\Column(type="string", nullable=true)
 *
 */
private $brochure = null;

public function getBrochure()
{
    return $this->brochure;
}

public function setBrochure($brochure)
{
    $this->brochure = $brochure;

    return $this;
}

在我的 AdvertType.php 中:

            ->add('brochure', 'file', array(
            'required'   => false,))

但我想我在 addAction 中遗漏了一些东西,因为它 returns 我是一条糟糕的道路,例如:(/tmp/phpYAVwMQ) 而不是 (C://filename.pdf) 显示时 {{ advert.brochure }}

    public function addAction(Request $request)
{
    $advert = new Advert();
    $form = $this->createForm(new AdvertType(), $advert);
    $usr = $this->get('security.context')->getToken()->getUser();

    if ($form->handleRequest($request)->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $advert->setAuthor($usr->getUsername());
        $advert->setDate(new \DateTime);
        $em->persist($advert);
        $em->flush();
        $request->getSession()->getFlashBag()->add('info', 'Annonce bien enregistrée.');

        // On redirige vers la page de visualisation de l'annonce nouvellement créée/
        return $this->redirect($this->generateUrl('info_view', array('id' => $advert->getId())));
    }

    return $this->render('SocietyPerfclientBundle:Default:add.html.twig', array(
        'form' => $form->createView(),
    ));
}

请帮帮我:)

Symfony 'file' 输入类型用于文件上传。如果文件已放置在您的网络服务器上的位置,它为您提供的路径,目前。

Documentation 提供了关于使用未维护的 Symfony v2.5 的信息,并提供了有关上传文件的可用信息(包括原始文件名)的示例。

将项目至少更新到长期支持版本 2.7 应该在要做的事情列表的早期,然后通过 2.8 和 3.0 更新到 3.3+。

出于安全原因,您无法获取本地计算机 ("C:\pathto") 的完整路径,只能获取文件名
$advert->setDate 行之后添加此行:

$advert->setBrochure($form->get('brochure')->getData()->getClientOriginalName());