2015-07-04 43 views
0

我无法检索文件上传过程中的originalName。Symfony2文件上传得到原始文件名

的print_r($请求 - >文件)返回如下:

Symfony\Component\HttpFoundation\FileBag Object 
(
    [parameters:protected] => Array 
     (
      [form_name] => Array 
       (
        [backgroundImageFile] => Symfony\Component\HttpFoundation\File\UploadedFile Object 
         (
          [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
          [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => bg_image.jpg 
          [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg 
          [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 65045 
          [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0 
          [pathName:SplFileInfo:private] => /tmp/phpsU3X7a 
          [fileName:SplFileInfo:private] => phpsU3X7a 
         ) 

       ) 

     ) 

) 


echo "<br /> Name= ".$this->getRequest()->files['backgroundImageFile']->getClientOriginalName(); 

返回:

Fatal error: Call to a member function getClientOriginalName() on a non-object in ../path to the controller

所以,我怎么得到ORIGINALNAME?

回答

1

尝试在FileBag上使用get()方法,而不是数组访问。

例如,

$this->getRequest()->files->get("backgroundImageFile")->getClientOriginalName(); 

或者,如果它在你的情况是有道理的,使用的形式上传,然后访问上传的文件作为表单数据。

+0

我还是遇到了致命错误:调用一个成员函数getClientOriginalName()在../path中的一个非对象到控制器。我只需要在表单提交之前获得原始文件名称 – kewpe20

+0

@ kewpe20在表单提交之前不会上传文件。上传发生在表单提交中,因此在此之前没有任何可以获得的名称。 –

+0

如果你可以把你的代码放在某处让我看一看,我会在你的具体实例中看到发生了什么。 –