2015-07-04 42 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

如果你可以把你的代碼放在某處讓我看一看,我會在你的具體實例中看到發生了什麼。 –