【问题标题】:Codeigniter: The filetype you are attempting to upload is not allowedCodeigniter:不允许您尝试上传的文件类型
【发布时间】:2017-08-18 21:28:19
【问题描述】:

我正在使用 CI 最新版本。 上传 JPG 文件时出错。我使用这里的代码https://www.codeigniter.com/userguide3/libraries/file_uploading.html 和一点点来自Multiple files upload in Codeigniter

控制者

$config = array(
'upload_path'   => 'path to upload',
'allowed_types' => 'jpg|gif|png|jpeg',
'overwrite'     => 0,
'max_size'      => 1024,                       
);
$this->load->library('upload', $config);
$this->upload->initialize($config); // Make sure it has been initialized

if (!$this->upload->do_upload('gambar1')){
    $error = array('error' => $this->upload->display_errors());
    return $error;
}else{ echo 'success'; }

视图

<?php echo form_open(base_url().'report/send', 'method="post" enctype="multipart/form-data"', $hidden);?>
<input type="file" class="hidden" name="gambar1"></form>

当我尝试上传 JPG 文件时,它给了我您尝试上传的文件类型不被允许。 任何想法?

【问题讨论】:

  • 尝试使用 form_open_multipart() 和 'upload_path' =&gt; './uploads/',

标签: php codeigniter upload


【解决方案1】:

这可能会有所帮助

'allowed_types' => 'jpg|gif|png|jpeg|JPG|PNG',

打印错误并查看它在此之后返回的内容

【讨论】:

  • 还是一样,您尝试上传的文件类型不被允许。
  • 文件名长度?
  • codeigniter.com/userguide3/libraries/… 试过这段代码,效果很好
  • 我认为问题出在我的电脑上(使用 win 7,wampserver),因为我已经尝试了 ci 用户指南中的完整代码,但没有编辑,仍然无法正常工作并给出相同的错误。我会在其他服务器上尝试。谢谢!
【解决方案2】:

解决方案: 我尝试将其上传到服务器。但它仍然给我同样的错误。然后我发现了这个:Codeigniter : The filetype you are attempting to upload is not allowed. Yesterday it was fine “我最近一次遇到这种情况是我将核心 Codeiginter 版本从 2.x 升级到 3.x。我更新了系统目录的内容,但没有更新 application/config。我没有发现application/config/mimes.php 文件略有不同 - 新版本返回一个数组,而旧版本将其作为 var 包含。修复是复制到新版本的 mimes.php"

【讨论】:

  • 我有相同的哑剧。事实上,我在 localhost 和在线上有相同的版本。他们俩都工作了一段时间。刚才,我无法在线上传 Excel 文件。有什么线索吗?谢谢!
  • @itsols 我最终使用move_uploaded_file() 对文件扩展名进行自定义验证。
【解决方案3】:

我遇到了同样的问题,我发现错误来自上传的图片。 如果它们最初是 .png 文件,而我自己将它们更改为 .jpg,我会收到这种错误。更改任何文件的 mime 类型时也会发生同样的情况。 我所做的是放回原来的哑剧类型,它工作得很好。

【讨论】:

  • 我遇到了同样的问题,Dropzone.js 在客户端转换它们并将 .png 上传为 .jpg。即使我设置了$config["allowed_types"] = 'gif|jpg|png|jpeg';,Codeigniter 也抱怨文件类型。设置 "allowed_types" = '*' 会让 CI 关闭。
  • @ourmandave 。谢谢人。这对我有帮助。我尝试让 txt 文件不起作用。所以我改为 * 并且它可以工作
【解决方案4】:

我遇到了同样的问题.......找到了太多的解决方案,但没有任何解决方案对我有用........然后我尝试使用不同的方法上传,这很有效。 .....CI 版本是 3.1.10

这是你的解决方案

$report_pdf = "";

    if (!empty($_FILES) && isset($_FILES["report_pdf"])) {

        $ext = pathinfo($_FILES['report_pdf']['name'], PATHINFO_EXTENSION);
        $new_name = 'report_pdf_' . time() . '_' . $this->get_random_string(4) . '.' . $ext;
        $file_url = "uploads/" . $new_name;


        $config['file_name'] = $new_name . "." . $ext;
        $config['upload_path'] = "uploads/";
        $config['allowed_types'] = '*';

        $this->load->library('upload', $config);

        $_FILES['userfile2']['name'] = $new_name . "." . $ext; //$_FILES['songs']['name'][$i];
        $_FILES['userfile2']['type'] = $_FILES['report_pdf']['type'];
        $_FILES['userfile2']['tmp_name'] = $_FILES['report_pdf']['tmp_name'];
        $_FILES['userfile2']['error'] = $_FILES['report_pdf']['error'];
        $_FILES['userfile2']['size'] = $_FILES['report_pdf']['size'];
        $this->upload->initialize($config);
        if ($this->upload->do_upload('userfile2')) {

            $finfo = $this->upload->data();
            $report_pdf = $file_url;
        } else {
            $error = $this->upload->display_errors();
            $result = array(
                'msg' => strip_tags($error)
            );
        }
    }

【讨论】:

    【解决方案5】:

    对于 PDF,CI3 mimes 数组在 config/mimes.php 文件中没有“application/octet-stream”。在 pdf 键中添加“application/octet-stream”。工作正常。

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 2012-04-22
      • 1970-01-01
      • 2011-11-21
      • 2011-06-08
      • 2014-12-30
      • 2023-04-07
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多