Symfony 2 - 如何从getRequest()获取文件扩展名 - > files-> get()

时间:2017-08-25 05:34:55

标签: php html forms symfony file-upload

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

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

5 个答案:

答案 0 :(得分:2)

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

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

// Symfony is guessing extension of file
$extension = $image->guessExtension();

答案 1 :(得分: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 :(得分:0)

$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();

答案 3 :(得分:0)

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

这是您的实体文件

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;

答案 4 :(得分:0)

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