【问题标题】:Symfony 2 - How to get file extension from getRequest()->files->get()Symfony 2 - 如何从 getRequest()->files->get() 获取文件扩展名
【发布时间】:2018-02-03 03:01:17
【问题描述】:

我有一个照片上传 HTML 表单,其中的值是使用 getRequest() 捕获的。当我不使用 Symfony 表单时,如何获取它的文件扩展名?这是我捕获表单元素值的行。

$image = $this->getRequest()->files->get("image");

【问题讨论】:

    标签: php html forms symfony file-upload


    【解决方案1】:

    如果您需要知道文件扩展名,您可以使用 getClientOriginalExtension() 来获取文件类型扩展名。 像这样:

    $image = $request->files->get( 'image' );
    print_r($image->getClientOriginalExtension());
    

    您还可以通过其他功能获取其他详细信息,例如文件大小、文件类型、文件路径等

    getATime()
    getBasename()
    getCTime()
    getClientMimeType()
    getClientOriginalExtension()
    getClientOriginalName()
    getClientSize()
    getError()
    getErrorMessage()
    getExtension()
    getFileInfo()
    getFilename()
    getGroup()
    getInode()
    getLinkTarget()
    getMTime()
    getMaxFilesize()
    getMimeType()
    getOwner()
    getPath()
    getPathInfo()
    getPathname()
    getPerms()
    getRealPath()
    getSize()
    getType()
    

    等等。

    【讨论】:

      【解决方案2】:

      你可以使用symfony的guessExtension()函数

      $image = $this->getRequest()->files->get("image");
      
      // Symfony is guessing extension of file
      $extension = $image->guessExtension();
      

      【讨论】:

        【解决方案3】:
        $uploadPath = $this->container->getParameter('kernel.root_dir') . '/../web/uploads/';
        
        try {
            $uploadfile = $request->files->get('filename');
        
            /* @var $uploadfile \Symfony\Component\HttpFoundation\File\File */
            $uploadedFile = $uploadfile->move($uploadPath, $uploadfile->getClientOriginalName());
        
            unset($uploadfile);
        } catch (\Exception $e) {
            /* if you don't set $avatarFile to a default file here
             * you cannot execute the next instruction.
             */
        }
        
        $filename = $uploadedFile->getBasename();
        $extentison = $uploadedFile->getExtension();
        

        【讨论】:

        • 实际上我在上传之前需要文件扩展名,因为我指定了不同的名称并上传文件。
        【解决方案4】:

        如果您需要在上传文件之前获取文件扩展名

        这是你的实体文件

        class Excel_file_details
        {
           /**
              * @var int
              *
              * @ORM\Column(name="id", type="integer")
              * @ORM\Id
              * @ORM\GeneratedValue(strategy="AUTO")
              */
              private $id;
        
             /**
             * @var string
             *
             * @ORM\Column(name="filename", type="string", length=255)
             */
             private $filename;
        
            /**
            * Get id
            *
            * @return integer
            */
            public function getId()
            {
              return $this->id;
            }
        
        
            public function setFilename($filename)
            {
              $this->filename = $filename;
        
              return $this;
            }
        
        
            public function getFilename()
            {
               return $this->filename;
            }
        

        }

        在您的控制器中

                    $excelobj = new Excel_file_details();
                    $uploaddir = $this->container->getParameter('kernel.root_dir') . '/../web/uploads/excelfiles/' . $folderName;
                    $file = $excelobj->getFilename();
                    $fileName = $excelobj->getFilename()->getClientOriginalName();
                    $ext = pathinfo($uploaddir . $fileName, PATHINFO_EXTENSION);
                    $name = substr($fileName, 0, -(strlen($ext) + 1));
                    $fileName = $name . '@' . date('Y-m-d H-i-s') . '.' . $ext;
        

        【讨论】:

          【解决方案5】:

          getClientOriginalName() 为我工作以获取原始文件名。 guessEstension() 无效。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-04-14
            • 2010-11-23
            • 1970-01-01
            • 2012-07-23
            • 2017-12-22
            • 2013-05-28
            • 1970-01-01
            相关资源
            最近更新 更多