如何允许.xls文件上载?

时间:2019-07-26 作者:Sayed Mohd Ali

尝试上载xls文件时出现以下错误。

抱歉,出于安全原因,不允许使用此文件类型。

已尝试插件wp extra文件类型,但没有选择xls文件类型的选项。

尝试了pro mime类型插件,Xls有一个允许的选项,我也这么做了,但仍然不起作用,并且出现了相同的错误。

还尝试在中添加以下代码function.php

function my_myme_types($mime_types){
      // New allowed mime types.
$mime_types[\'xls\'] = \'application/vnd.ms-excel\';

return $mime_types;
}
add_filter(\'upload_mimes\', \'my_myme_types\', 1, 1);
但仍然显示相同的错误。

也尝试过

function wpse294198_mime_types( $mimes ) {
    $mimes[\'xls|xlsx\'] = \'application/vnd.ms-excel\';
    return $mimes;
}
add_filter( \'mime_types\', \'wpse294198_mime_types\' );
唯一可行的解决方案是wp config ALLOW UNFILTED UPLOADS(wp配置允许未经筛选的上载)。但如果我们考虑到安全原因,这是有风险的。我只想允许xls文件,而不是像Php、js extra这样的任何其他文件格式。

 define(‘ALLOW_UNFILTERED_UPLOADS’, true)
我面临的问题是,如果有上传选项,现在任何人都可以从任何地方上传任何类型的文件。所以我认为这不是一件好事。我需要一个更好的办法来解决我的问题。

我正在使用WordPress v5.2,有人建议我尝试下面的解决方案,但也没有成功。

function wpse323750_multi_mimes( $check, $file, $filename, $mimes ) {
  if ( empty( $check[\'ext\'] ) && empty( $check[\'type\'] ) ) {
    $multi_mimes = [ [ \'xls\' => \'application/excel\' ], [ \'xls\' => \'application/vnd.ms-excel\' ], [\'xls\' => \'application/x-excel\' ], [\'xls\' => \'application/x-msexcel\'] ];

  foreach( $multi_mimes as $mime ) {
    remove_filter( \'wp_check_filetype_and_ext\', \'wpse323750_multi_mimes\', 99, 4 );
    $check = wp_check_filetype_and_ext( $file, $filename, $mime );
    add_filter( \'wp_check_filetype_and_ext\', \'wpse323750_multi_mimes\', 99, 4 );
    if ( ! empty( $check[\'ext\'] ) ||  ! empty( $check[\'type\'] ) ) {
      return $check;
    }
  }
  }
  return $check;
}
add_filter( \'wp_check_filetype_and_ext\', \'wpse323750_multi_mimes\', 99, 4 );

1 个回复
SO网友:Max Yudin

尝试相同的功能,但不同$mime_types 密钥(\'xla|xls|xlt|xlw\'):

<?php
function my_myme_types( $mime_types ){
    // New allowed mime types.
    $mime_types[\'xla|xls|xlt|xlw\'] = \'application/vnd.ms-excel\';

    return $mime_types;
}
add_filter( \'upload_mimes\', \'my_myme_types\', 1, 1 );
要获取WordPress使用的MIME类型数组键和值,请执行以下操作:

<?php
$mimes = wp_get_mime_types();

echo \'<pre>\';
print_r( $data );
echo \'</pre>\';

相关推荐

Custom CSS In Uploads Folder

我想知道上传文件夹中是否有自定义CSS文件。我从以前的开发人员那里继承了一个自定义主题,前端的大量样式都是从这个样式表派生出来的,它同样不在主题或插件文件夹中,而是wp-content/uploads 文件夹我正在努力找出它是如何推导出来的,但它确实存在。这是否被视为不良做法,或者是否有这样的用例?我相信之前的开发人员提到了Visual Composer或JS Composer以及编译更少的文件。。。但我对此不确定,他已经失去了联系,我想知道为什么我们要以这种方式使用样式表,因此这个问题是关于最佳实践的,