codeigniter 相关问题

CodeIgniter是由EllisLab公司创建的开源PHP Web开发框架,它已被不列颠哥伦比亚理工学院采用。该框架实现了Model-View-Controller设计模式的修改版本。有关CodeIgniter类,方法,函数,语法和用法的问题,请使用此标记。

CodeIgniter:“不允许您尝试上传的文件类型。”

我遇到了一个非常奇怪的上传问题。这是相关的视图文件: 我遇到了一个非常奇怪的上传问题。这是相关的视图文件: <form action="http://localhost/index.php/temp/upload/" method="post" enctype="multipart/form-data"> <fieldset> <input type="file" name="userfile"/> <input type="submit" value="Upload"/> </fieldset> </form> 这是我的 temp 控制器的 upload() 方法: public function upload() { $config['upload_path'] = FCPATH . 'uploads' . DIRECTORY_SEPARATOR; assert(file_exists($config['upload_path']) === TRUE); $config['allowed_types'] = 'avi|mpg|mpeg|wmv|jpg'; $config['max_size'] = '0'; $this->load->library('upload', $config); if ($this->upload->do_upload('userfile') === FALSE) { // Some error occured var_dump($this->upload->display_errors('', '')); var_dump($_FILES); } else { // Upload successful var_dump($this->upload->data()); } } 当我上传 AVI 视频时,一切正常。当我上传 WMV 视频时,我会得到以下 var 转储: string 'The filetype you are attempting to upload is not allowed.' (length=57) array 'userfile' => array 'name' => string 'wmv.wmv' (length=7) 'type' => string 'video/x-ms-wmv' (length=14) 'tmp_name' => string 'C:\wamp\tmp\php2333.tmp' (length=23) 'error' => int 0 'size' => int 83914 “wmv”扩展名被解释为 MIME 类型:video/x-ms-wmv。这应该没问题,因为我的 config/mimes.php 有以下内容: 'wmv' => array('video/x-ms-wmv', 'audio/x-ms-wmv') 当我尝试上传其他文件时,也是类似的情况。到目前为止,唯一有效的似乎是我的测试 AVI 视频。 有什么想法可能是错的吗? 更新1: 我的一台机器,只上传AVI。在另一位开发人员的计算机上,没有文件上传。在另一台开发人员的机器上,所有支持的文件都会上传。这些是浏览器还是服务器问题? 您正在使用 Firefox,不是吗? 你可以尝试查看system/libraries/Upload.php第199行: $this->_file_mime_type($_FILES[$field]); 将该行更改为: $this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die(); 然后上传您的 .wmv 文件。它会显示类似 application/octet-stream 之类的东西。将其添加到您的mimes.php。希望这有帮助 =) 类似答案这里 一些链接: CodeIgniter 论坛主题 Firefox 中的 Mimetype 损坏 绕过 IE 的 MIME 类型修改 $config["allowed_types"] ="*"; 使用 FTP/SFTP/scp/etc 将 .wmv 文件上传到运行 CodeIgniter 应用程序的服务器 在您上传.wmv文件的服务器上,执行以下PHP代码 <?php $file_path = 'CHANGE_THIS_TO_ABSOLUTE_FILE_PATH_THAT_YOU_HAVE_UPLOADED.wmv'; $finfo = finfo_open(FILEINFO_MIME); $mime = finfo_file($finfo, $file_path); var_dump($mime); ?> 将代码另存为mime.php 在终端中运行 - $ php mime.php 如果它转储除 wmv 已有的任何其他值,请将该值附加到 wmv mime 类型中。 还要检查其他开发机器上的 PHP_VERSION。 finfo_open 是在 PHP 5.3 中引入的。上传工作的开发机器可能有旧版本的 PHP,或者可能有适合 wmv 的 mime 类型。 您是否尝试在 $config['allowed_types'] 中使用 mime 类型而不是扩展名? 这样写 $config["allowed_types"] = "video/x-msvideo|image/jpeg|video/mpeg|video/x-ms-wmv"; 在 CodeIgniter 中上传 .doc 文件的答案 改变这个 'doc' => 'application/msword', 第 95 行(application/config/mimes.php 文件) 'doc' => array('application/vnd.ms-word','application/msword'), 我最近在使用 Codeigniter 的 Upload 类时遇到了一些非常类似的问题。 *allowed_types* 似乎不起作用。例如,我想允许上传 .PNG 图像,但不允许它们通过其过滤器。我最终进一步调查了它。我允许临时上传所有文件类型,上传了 .PNG,然后转储上传数据 ($this->upload->data());)。由于某种原因,它认为 MIME 类型是 text/plain!这可能与您的问题有关。 我在一些论坛上找到了一些解决方案,您可以在其中修改/扩展类或核心,但它们对我不起作用 - 抱歉。我相信这是一个 Codeigniter Core 错误(我认为这个问题已经由 EllisLabs 提出)。无论如何,我最终还是对这该死的东西进行了硬编码!嗯,希望这对您有所帮助。 基本示例/解决方法, //replace with your allowed MIME types if ($_FILES['name_of_form_upload']['type'] != 'image/jpeg' && $_FILES['name_of_form_upload']['type'] != 'image/png' && $_FILES['name_of_form_upload']['type'] != 'image/gif') { $data['message'] = '<div class="message">That file type is not allowed!</div>'; $this->load->view('home_view', $data); } else { //run upload code } 编辑:格式/语法 检查 application/config 中的 mimes.php 文件。它应该返回一个 mime 类型数组,例如文件末尾的 return $mimes; 或 mime 数组开头的 return array(.....。 对于 Codeigniter 3.1.7,如果您通过 $config['file_name'] 提供自定义文件名,请确保文件名也具有文件扩展名。 这实际上是核心中的一个错误。我升级到最新版本的 CI,错误消失了。 如果您需要简单的方法来解决这个问题,有一个简单的解决方案。 打开“system/libraries/Upload.php”文件 line no 465 you will see if ( ! $this->is_allowed_filetype()) { $this->set_error('upload_invalid_filetype', 'debug'); return FALSE; } just make it true if ( ! $this->is_allowed_filetype()) { $this->set_error('upload_invalid_filetype', 'debug'); return TRUE; } note : it will stop your all file type validation. 申请变更

回答 11 投票 0

在调用 CodeIgniter 的 update_batch() 方法之前,转置多个平面数组中的数据并添加二级关联键

我在重组某些数组数据时遇到问题。 我正在将数据批量上传(更新)到数据库。所以我有 3 个这样的数组: 数组 ( [0] => aaa [1] => ccc [2] => eee [3] =...

回答 2 投票 0

重组数组并使用update_batch函数

重组数组时遇到问题。 我正在将数据批量上传(更新)到数据库。所以我有一个像这样的 3 数组。 数组 ( [0] => aaa [1] => ccc [2] => eee [3] => ggg ) 一个...

回答 2 投票 0

如何在codeigniter中将当前日期时间插入oracle数据库[重复]

我试图在 Codeigniter 中将当前日期时间插入到 Oracle 数据库中,但出现如下错误: ORA-01858: 在需要数字的地方发现了非数字字符 插入“USER_...

回答 4 投票 0

对 CodeIgniter 查询结果进行分块并转置以在垂直 HTML 列中打印值

我有一个CodeIgniter查询结果,有28条记录。 我的意思是根据这些记录创建一个 HTML 表,并从左到右按列打印数据。 换句话说,我想做 7 行 4

回答 3 投票 0

foreach codeigniter 计数索引,用于生成 result() 到 html 表中

我有一个基于 result() 的活动记录代码点火器。 结果有 28 条记录 我的意思是创建一个基于此记录的表。 我的问题是,我想制作 7 行、4 列以提高可读性。 我的...

回答 3 投票 0

codeigniter 3.1.11 兼容哪个 php 版本?

目前,我们使用的是 php 5.6,我正在将 php 版本升级为 codeignitor 3.1.11。请推荐我 我们正在使用 php 5.6,我正在升级 codeignitor 3.1.11 和 3.1 的 php 版本...

回答 1 投票 0

PHP启动:无法加载动态库'ssh2.so'

你好,最近我将我的SO从16.x升级到22.04,同时我也将PHP版本从7.2升级到7.4 .. 8.x,我安装了一些PHP扩展,但我遇到了SSH2问题。所以我

回答 1 投票 0

从模型获取二维数组,然后从控制器传递到CodeIgniter中的视图

我需要将模型中的数组(读取文本文件时数组中充满信息)传递到控制器,最后传递到视图。 我的型号: 函数 show_notes() { $file = "notes.txt...

回答 3 投票 0

从模型中获取数组,然后传递给视图

简单,但对于我这个初学者来说,是个问题。我需要将模型中的数组(读取文本文件时数组中充满信息)传递到控制器,最后传递到视图。 我的型号:

回答 3 投票 0

Codeigniter – 上传目标文件夹似乎不可写

我正在使用 CodeIgniter 的上传助手,并在尝试上传图像时收到上述错误。我尝试上传的文件夹的权限是755。当我将其更改为777时,错误...

回答 6 投票 0

在将数据表中的数据打印为pdf时,我想根据CodeIgniter 3中类似的列值获取单独的pdf

我的一栏中有很多医生的名字。在将表格数据打印为 pdf 时,我想要为每位医生提供单独的 pdf。我正在 CodeIgniter 3 上做这个项目。我使用 window.print() 来打印数据......

回答 1 投票 0

从 CodeIgniter 3 中的 url 中删除 index.php

我正在CodeIgniter 3中做一个项目。我需要从url中删除index.php。为此,请帮助我获取 CodeIgniter 3 的 .htaccess 文件以及放置此文件的位置。 这是我的基本网址 http://

回答 8 投票 0

SQL Server 在 CodeIgniter 4.1.8 中工作,但在 CodeIgniter 4.4.5 中出错

我刚刚下载了最新版本的CodeIgniter 4.4.5。我在使用 CodeIgniter 版本的工作应用程序上使用相同的代码。 4.1.8.我收到以下错误: CodeIgniter\数据库\例外...

回答 1 投票 0

MSSQL 在 CodeIgniter 4.1.8 中工作,但在 CodeIgniter 4.4.5 中出错

我刚刚下载了最新版本的CodeIgniter 4.4.5。我在使用 CodeIgniter 版本的工作应用程序上使用相同的代码。 4.1.8.我收到以下错误: CodeIgniter\数据库\例外...

回答 1 投票 0

如何在codeigniter中插入多个值数据

在我的选择选项中,我有两个数字的值示例值=“163, 162” 我有一个模型函数,可以在其中插入第一个数值,即类别 id 163 变量转储 数组(2) { [0]=...

回答 3 投票 0

Codeigniter LIKE 带通配符 (%)

我在 codeigniter 中有简单的数据库查询,但是我无法使用通配符进行搜索。这是我的代码: $this->db->like('film.title',"%$query%"); $this->db->escape_like_str($q...

回答 7 投票 0

CodeIgniter:在视图中的表单中创建复选框,以便将多个选择作为数组提交

我正在按照 nettut+ 教程进行分页并将 POST 输入作为查询字符串存储在数据库中。到目前为止,一切都工作正常,直到假设如果我得到一个数组作为 POST 输入,我无法循环......

回答 2 投票 0

如何从codeigniter中的URL获取id?

我正在尝试从 URL 获取“id”,以便删除该特定的选定产品。我已经使用了 $this->uri->segment(3) 但它没有从 URL 获取任何值。虽然我可以看到'product_...

回答 9 投票 0

将多个json元素插入MongoDB数据库

我已在 codeigniter 驱动程序的帮助下将我的 php Web 应用程序连接到 mongodb。尝试将多个 json 元素插入数据库,如下所示。 “票”:[ { “问题&q...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.