2012-08-31 41 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();