【发布时间】:2018-02-03 03:01:17
【问题描述】:
我有一个照片上传 HTML 表单,其中的值是使用 getRequest() 捕获的。当我不使用 Symfony 表单时,如何获取它的文件扩展名?这是我捕获表单元素值的行。
$image = $this->getRequest()->files->get("image");
【问题讨论】:
标签: php html forms symfony file-upload
我有一个照片上传 HTML 表单,其中的值是使用 getRequest() 捕获的。当我不使用 Symfony 表单时,如何获取它的文件扩展名?这是我捕获表单元素值的行。
$image = $this->getRequest()->files->get("image");
【问题讨论】:
标签: php html forms symfony file-upload
如果您需要知道文件扩展名,您可以使用 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()
等等。
【讨论】:
你可以使用symfony的guessExtension()函数
$image = $this->getRequest()->files->get("image");
// Symfony is guessing extension of file
$extension = $image->guessExtension();
【讨论】:
$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();
【讨论】:
如果您需要在上传文件之前获取文件扩展名
这是你的实体文件
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;
【讨论】:
getClientOriginalName() 为我工作以获取原始文件名。 guessEstension() 无效。
【讨论】: