【问题标题】:Uploading a csv into Codeigniter将 csv 上传到 Codeigniter
【发布时间】:2016-11-24 14:37:36
【问题描述】:

是否有其他人在将 csv 文件上传到 Codeigniter 时遇到问题?我收到一个非常烦人的“不允许您尝试上传的文件类型”。错误,即使我已经非常明确地设置了上传类型。这是我的代码(应该是相当标准的东西):

    function doUpload() {

    $config['upload_path'] = 'uploads/';
    $config['allowed_types'] = 'text/plain|text/csv|csv';
    $config['max_size'] = '5000';
    $config['file_name'] = 'upload' . time();

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

    if(!$this->upload->do_upload()) echo $this->upload->display_errors();
    else {
        $file_info = $this->upload->data();
        $csvfilepath = "uploads/" . $file_info['file_name'];
        $this->addfromcsv($csvfilepath);

    }

}

我试图覆盖我允许的类型中的所有基础 - 也许我错过了一个? 感谢您对此的任何帮助!

【问题讨论】:

  • allowed_types 应该是 $config['allowed_types'] = 'csv'; 并且在 config/mimes.php 你应该在 csv中附加 text/plain > 键。我就是这样做的。

标签: codeigniter upload mime-types


【解决方案1】:

不幸的是,没有官方规范,所以有很多:在缺少的那些中最受欢迎的是,

text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext

你不太可能遇到另一个人。

【讨论】:

  • 谢谢,但毕竟没有用。似乎很愚蠢,以至于没有办法将其设置为允许所有文件类型。至少在开发过程中,即使他们不想在生产中允许它。
  • @StormShadow:其实有办法,通过扩展上传类。这是代码,我过去使用过它并且可以工作。 codeigniter.com/forums/viewthread/123663/#757848 顺便说一句,您可能只是想查看文件的特定 mime 类型并添加该类型。
  • 我可以通过非编程方式找到文件的 mime 类型?
  • 子类工作得很好!谢谢!大绿支票给你!
  • 我处理的 CSV 文件(从网上银行下载)的 mime 类型为 text/plain - 以防其他人无法使用上述文件。
【解决方案2】:

我在上传 .csv 文件时遇到了同样的问题。我通过在 OS X 终端中使用 file -I file.csv 确定 mime 类型来解决它。它报告 mime 类型是“text/plain”,所以我将其添加到 config/mimes.php 文件中。

【讨论】:

    【解决方案3】:

    我通过将 cbrandolino 建议的 mimetypes 添加到 config/mimes.php 来让它工作(很棒的提示 jljohnstone)。所以我的 $mimes 的 csv 属性现在看起来像这样:

    'csv'   =>  array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel')
    

    【讨论】:

    • 非常有帮助。我想知道为什么官方 CI 没有包含这个。谢谢。
    • 也为我工作。 /appication/config/mime.php 文件中有一个 CSV mime 类型列表,但它不像 Jos 发布的那样广泛。
    • 我在列表中遗漏了两个,添加它们后我的工作正常!
    【解决方案4】:

    -- Codeigniter 2.2.0 --

    我对上传库进行了快速调试,我发现有时在不同服务器上运行的相同源代码会识别出具有不同文件的同一个 CSV 文件类型(即 Server 1 将 CSV 文件标识为:application/vnd.ms-excel 但 Server 2 将相同的 CSV 文件标识为:文本/xc)。

    我的解决方法是在 application/config/mimes.php 中添加由服务器识别的文件类型,该文件类型是问题所在。因此,我的 mimes.php 文件中的 csv 数组如下所示: 'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/x-c').

    【讨论】:

      【解决方案5】:

      我尝试了很多方法来在 codeigniter 中上传 csv 文件:-

      我将 mime 类型 ( application/vnd.ms-excel ) 添加到 mime 类型文件,但平均问题是 codeigniter 将只接受文件名 userfile。如果您将设置文件名 userfile 则它可以工作。

      我认为可能还有其他方法,但我找不到。

      【讨论】:

        【解决方案6】:

        在允许的类型中首先输入“csv”

         $config['allowed_types'] = 'csv';
         $this->load->library('upload', $config);
        

        第二次转到 /config/mimes.php 并按如下方式更改“csv”数组元素:

         'csv' => array(
            'text/x-comma-separated-values',
            'text/comma-separated-values',
            'application/octet-stream',
            'application/vnd.ms-excel',
            'application/x-csv',
            'text/x-csv',
            'text/csv',
            'application/csv',
            'application/excel',
            'application/vnd.msexcel',
            'text/plain'
         ),
        

        【讨论】:

          猜你喜欢
          • 2013-06-13
          • 2018-09-03
          • 1970-01-01
          • 2012-03-07
          • 1970-01-01
          • 2011-11-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多