我在上传XML文件时遇到问题。尝试getExtension()
(返回空字符串),guessExtension()
和guessClientExtension()
(都返回NULL
)。
我应该只是硬编码扩展(我知道它应该始终是XML)还是有办法获得它?我看到上传文件的mimeType是text/xml
。当我上传.txt文件时,它会得到正确的扩展。
也许我上传文件错了?
$request = $this->getRequest();
$form = $this->createForm(new FileImportType(), null, ['em' => $this->getDoctrine()->getManager()]);
$form->submit($request);
if ($form->isValid()) {
$file = null; // @var $file \Symfony\Component\HttpFoundation\File\UploadedFile
foreach ($request->files as $file) {
$file = $file['file'];
break;
}
var_dump($file->guessExdtension());
}
由于
答案 0 :(得分:1)
尝试从上传的$ file-> getFilename()获取它 然后,您可以使用以下方法提取扩展名:
$fileExtension = pathinfo( $file->getFilename(), PATHINFO_EXTENSION);
答案 1 :(得分:0)
我和我的团队一起努力寻找解决这个问题的方法。
似乎Symfony的库在其核心文件中缺少mimeType。
您可以在:
中添加mime类型../vendor/symfony/src/Symfony/Component/HttpFoundation/File/MineType/MimeTypeExtensionGuesser.php
在我的情况下,guessExtension()无法识别.xls文件。
它缺少mime类型:" application / vnd.ms-office"
所以我将这一行添加到MimeTypeExtensionGuess.php中的$ defaultExtensions数组中:
'application/vnd.ms-office' => 'xls',
在您的情况下可能会丢失:
'application/xml' => 'xml',
干杯!我希望这会有所帮助。
答案 2 :(得分:0)
不要直接在供应商目录中编辑文件(如果需要,请执行拉取请求),因为升级时您将失去更改。
但是使用$file->getClientOriginalName()
来获取您上传的原始文件名if $file->guessExtension()
会让您错误。
我有类似的问题,mp3被识别为mpga'