【问题标题】:ttf (font) file not uploading with Codeigniter 3ttf(字体)文件未使用 Codeigniter 3 上传
【发布时间】:2021-08-12 14:33:12
【问题描述】:

我在将ttf 文件上传到服务器的上传文件夹时遇到问题,我的代码使用otf, eot, woff 格式,但不适用于ttf。 我在application/config/mimes.php中添加了mime类型

'ttf'   =>  array('font/sfnt', 'font/truetype', 'font/ttf', 'application/x-font-truetype', 'application/x-font-ttf', 'application/octet-stream'),
'otf'   =>  array('application/vnd.oasis.opendocument.formula-template', 'application/vnd.ms-opentype'),
'woff'  =>  'font/woff',
'eot'   =>  'application/vnd.ms-fontobject',

这是我的上传类配置

$config['allowed_types'] = 'ttf|otf|eot|woff';

我已经一一检查了所有这些,但仍然无法正常工作,我们将不胜感激。谢谢

【问题讨论】:

  • 有人可以帮我解决这个问题吗?
  • 开启完整调试后,您的客户端开发者控制台或服务器是否有错误?文件是否卡在/tmp 文件夹中?
  • 不,它只返回这个错误The filetype you are attempting to upload is not allowed
  • 我以前从未使用过 CI,但有人说一个 specific version has a known issue 并且您可能必须使用 deeply inspect the mime type。我不知道 CI 是使用浏览器的 mime 类型(这是可欺骗的,并且在浏览器和文件类型之间有所不同)还是服务器,所以您可能需要在两端进行故障排除。
  • 您尝试了哪些 .ttf 文件?

标签: php codeigniter mime-types truetype


【解决方案1】:

在 codeigniter 2 和 3 中存在一些关于 mime 类型和允许的文件类型的多个错误...尝试另一种没有 codeigniter 上传库的上传方法或尝试

$config['allowed_types'] = '*';

您也可以先检查允许的类型然后上传它

$uploaded_file_extention = 'ttf'; //fetch the file extention first...
$allowed_types = array('ttf', 'otf', 'woff', 'eot');

if( !in_array($uploaded_file_extention, $allowed_types) ) {
    //do not continue to upload...
} else {
    //continue to upload with $config['allowed_types'] = '*';
}

【讨论】:

  • '*' 出于安全原因不太好,出于某些原因我不得不使用 Codeigniter 的上传库。
  • 是的,你是真的......但我猜没有其他选择:(
  • 除非您可以对允许的类型进行额外控制。您可以使用 ci 上传类,但您可以单独控制允许的类型。例子;您可以在上传后先检查文件类型...也许这会有所帮助
【解决方案2】:

最后,我有一个解决方案,我不知道这是 CodeIgniter 错误还是我的服务器限制我上传这些文件。这段代码解决了我的问题

$mimetype = $_FILES['fontfile']['type'];
if(in_array($mimetype, array('font/sfnt', 'font/truetype', 'font/ttf', 'application/x-font-truetype', 'application/x-font-ttf', 'application/octet-stream'))) {
    return true;
} else {
    return false;
}

如果为真,您可以调用 CodeIgniter 上传函数:

$config['allowed_types'] = '*';

任何人都在寻找 PHP 和 CodeIgniter 的解决方案,这里是解决方案。

感谢@berk-kanburlar 的提示

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 2015-12-23
    • 2023-03-22
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2016-09-16
    相关资源
    最近更新 更多