2012-08-31 52 views
3

我想在Symfony2中上傳多個文件。我試圖訪問以下請求對象,但我無法獲取參數屬性。我如何逐一到達這些文件來上傳它們。訪問PHP Array對象受保護的屬性

的錯誤,我得到:

Fatal error: Cannot access protected property Symfony\Component\HttpFoundation\FileBag::$parameters in /var/www/File/src/Webmuch/FileBundle/Entity/File.php on line 66

請求對象:

Symfony\Component\HttpFoundation\FileBag Object 
(
    [parameters:protected] => Array 
     (
      [file] => Array 
       (
        [0] => Symfony\Component\HttpFoundation\File\UploadedFile Object 
         (
          [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
          [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => FLB1.jpg 
          [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg 
          [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 13584 
          [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0 
          [pathName:SplFileInfo:private] => /tmp/phpzdaQgW 
          [fileName:SplFileInfo:private] => phpzdaQgW 
         ) 

        [1] => Symfony\Component\HttpFoundation\File\UploadedFile Object 
         (
          [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
          [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => FLB2.gif 
          [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/gif 
          [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 5193 
          [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0 
          [pathName:SplFileInfo:private] => /tmp/phpNUXho7 
          [fileName:SplFileInfo:private] => phpNUXho7 
         ) 

       ) 

     ) 

) 

請幫我找出這個對象的訪問。另外如果有人有更好的方式來上傳Symfony2中的文件。

回答

4

訪問這些文件,你這樣做

// retrieves an instance of UploadedFile 
$request->files->get('file'); 
+0

但是,我們如何訪問私有財產沒有教義? – Sekai

+0

學說?我在答案中的任何地方都沒有提到教義。你能否試着讓你的問題更清楚? –

+0

是的!事情是這些是受保護的屬性,即使您使用 $ request-> files-> get('file');這並不意味着你可以訪問這些屬性,因爲它們是受保護的,唯一的方法是在實體類中編寫getter。這就是文檔所說的。但如果您有其他意見,我會很高興聽到它 – Sekai

1

我想你想直接訪問屬性。您必須使用現有的getter和setter 1

這將返回文件名:

// retrieves an instance of UploadedFile 
$file = $request->files->get('file'); 
$file_name = $file->getClientOriginalName();