Symfony2输入文件

时间:2017-10-23 14:04:03

标签: symfony input path filenames

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

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

我在我的类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中遗漏了一些东西,因为它给我带来了一条错误的路径:(/ 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(),
    ));
}

请帮帮我:)。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

有关使用未维护的Symfony v2.5的

Documentation可用,并提供有关上载文件的可用信息的示例,包括原始文件名。

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