【问题标题】:CI File uploading gives file type error for rpt filesCI 文件上传会导致 rpt 文件的文件类型错误
【发布时间】:2019-10-20 08:04:23
【问题描述】:

我正在尝试使用以下代码上传 Crystal Reports (.rpt) 文件:

$config=array(
 'upload_path'=>$_SERVER['DOCUMENT_ROOT']."/assets/uploads/rpt/",
 'allowed_types'=>"rpt",
 'overwrite'  => TRUE,
 'file_name' =>$filename
);
$this->load->library('upload', $config);
$this->upload->initialize($config);
if($this->upload->do_upload('rpt1'))
{
 echo "Done";
}
else
 echo $this->upload->display_errors();

但它会返回:

您尝试上传的文件类型不允许。

然后我试图找出上传的文件类型:

print_r($_FILES['rpt1']['type']);

然后它返回:

应用程序/八位字节流

我做了以下更新:

'allowed_types'=>"rpt|application/octet-stream",

但它不起作用,我仍然收到相同的错误消息。

我还在 application/config/mimes.php

中添加了以下行
'rpt'   =>  'application/octet-stream',

为了将 .rpt 文件上传到服务器,我还需要做什么?

【问题讨论】:

  • 他们真的使用管道分隔符吗?不是数组? ['allowed_types' => ['rpt' => 'application/octet-stream']]...不熟悉CI。
  • @ficuscr 这只是另一种选择。我们可以直接创建一个配置数组并传递它,也可以设置单独的键值。我认为这不会影响
  • 看到很多关于这个话题的...stackoverflow.com/questions/9815208/…也许只是"*"?无论如何也不能真正相信它。 Mime 类型就是这样。
  • @ficuscr 实际上我只需要允许 rpt 文件,所以不想使用 *.我已经阅读了您分享的文章,在我的问题描述中我提到我已经添加了 mime 类型。

标签: php codeigniter file-upload


【解决方案1】:

我去了

系统/库/Upload.php

在第 1 行。 454(CI 3.x)并编写了以下代码行:

var_dump($this->file_type); die();

执行时返回

文本/纯文本

使用时

print_r($_FILES['rpt1']['type']);

给了

应用程序/八位字节流

现在在

应用程序/config/mimes.php

我写道:'rpt' => 'text/plain', 而这一次,一切正常。

【讨论】:

    猜你喜欢
    • 2013-01-14
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多