【问题标题】:Symfony2 UploadedFile::guessExtension() for XMLSymfony2 UploadedFile::guessExtension() 用于 XML
【发布时间】:2014-12-12 22:37:55
【问题描述】:

我在获取上传的 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());
}

谢谢

【问题讨论】:

    标签: xml symfony file-upload mime-types


    【解决方案1】:

    尝试从上传的$file->getFilename()中获取 然后您可以使用以下方法提取扩展名:

     $fileExtension = pathinfo( $file->getFilename(), PATHINFO_EXTENSION);
    

    在 php 文档中:http://php.net/manual/en/function.pathinfo.php

    【讨论】:

    • 这是一种方式。如果没有人发布更好的解决方案,我想我会选择这个。 编辑: 试过了,但 getFilename() 给我返回了一些半随机字符串 phpxxxxxx 其中 xxxxxx 是随机字母数字。也许我上传的文件有误。将编辑我的问题。
    【解决方案2】:

    不要直接在供应商目录中编辑文件(如果需要,请执行拉取请求),因为升级时您会丢失所做的更改。

    但是使用$file->getClientOriginalName() 来获取您上传的原始文件名if $file->guessExtension() 会导致您出错。

    我遇到了类似的问题,即 mp3 被识别为 mpga

    【讨论】:

      【解决方案3】:

      我一直在与我的团队一起努力寻找解决此问题的方法。

      似乎 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',
      

      干杯!我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-13
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多