首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel文件下载- php_fileinfo扩展名未启用

Laravel文件下载- php_fileinfo扩展名未启用
EN

Stack Overflow用户
提问于 2017-05-18 15:16:44
回答 1查看 4.9K关注 0票数 3

我在PHP7.1中使用Laravel5.4.13,并迁移到一个共享主机。我正在努力使网站正常工作,但由于缺少一个分机:php_fileinfo,我无法工作。

这是网站崩溃的代码:

代码语言:javascript
复制
$file = base_path() . "/storage/app/public/small.mp4";
return response()->download($file, "small.mp4")->deleteFileAfterSend(true);

这就是Laravel给出的错误:

代码语言:javascript
复制
LogicException in MimeTypeGuesser.php line 135:
Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)

我联系了网络托管公司,他们告诉我,由于安全措施,他们无法启用这个扩展。

我有什么选择?还有其他的Laravel/PHP函数可以下载文件吗?我应该使用不同的框架吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 15:24:50

如果你想用“拉拉法”做这件事,你有一个选择。

Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser内部有一个名为guess()的方法,它被调用,也是抛出正在接收的错误的原因。

还有一个register()方法,允许您注册一个新的方法。根据守则:

默认情况下,框架提供的所有mime类型猜测器都已安装(如果在当前OS/PHP安装程序中可用)。 您可以通过调用singleton实例上的寄存器()方法来注册自定义猜测器。自定义猜测总是在任何默认猜测之前调用。

代码语言:javascript
复制
$guesser = MimeTypeGuesser::getInstance();
$guesser->register(new MyCustomMimeTypeGuesser());

如果您想要更改默认猜测的顺序,只需重新注册您的首选一个作为一个自定义的。最后一次注册猜测者优先于先前注册的猜测者。 重新注册内置猜测器还允许您配置它:

代码语言:javascript
复制
$guesser = MimeTypeGuesser::getInstance();
$guesser->register(new FileinfoMimeTypeGuesser('/path/to/magic/file'));

您可以查看vendor/symfony/http-foundation/File/MimeType文件夹中的默认猜测器,并制作自己的版本,以一种支持的方式检查mime类型。那就注册吧。

另请参阅:

http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.html

https://github.com/symfony/http-foundation/blob/master/File/MimeType/MimeTypeGuesser.php#L131

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44051722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档