当前位置: 首页 > 面试题库 >

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

滑骞尧
2023-03-14
问题内容

我遇到一个非常奇怪的上传问题。这是相关的视图文件:

<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。希望这个帮助=)



 类似资料:
  • 问题内容: 我收到错误消息:尝试更新任何文件时,不允许您尝试上传的文件类型。 我尝试了许多不同的文件-大多数是gif&jpeg,每次都遇到相同的错误。 var_dump($ _ FILES); 给我: 我检查了mime配置,它包含正确的内容。例: 我花了太长时间了,这真让我发疯!任何想法都将非常有帮助。 问题答案: 如果您使用的是Codeigniter 2.1.0版,则上载库中存在错误。有关更多详

  • 问题内容: 控制器: 视图: Javascript: 但是,我得到一个错误 我试图从ajax发布数据和文件,但是它不起作用。我的问题是如何解决该错误?为什么控制器无法读取用户文件的内容? 谢谢 问题答案: 尝试将您的输入内容放入表单并提供id =’your_form_id表单,然后以这种方式在javascript中发送数据: 然后替换这行 有了这个 也设置以下:

  • 我在codeigniter的配置文件中启用了csrf_保护选项,并使用form_open()函数创建表单。但当我提交表单时,会出现以下错误: 不允许您请求的操作。 我已经回答了这个主题(与我的问题最相关):问题 但是它们不起作用,问题仍然存在。 我的config.php: 控制器(main.php): 查看(login.php):

  • 问题内容: 我正在创建一个页面,供用户上传文件。如果文件类型是其他jpg,gif和pdf,我希望使用if语句创建$ error变量。 这是我的代码: 我在构造if语句时遇到困难。我怎么说呢 问题答案: 将允许的类型放入数组并使用。

  • 我上传文件有问题。我正在使用codeigniter框架和dropzone。js上传文件。 我认为: 控制器: 问题是上传的文件返回为空: 数组(1){["upload_data"]= 我试图转储fileToUpload输入的POST值,也是空的。是不是我忽略了什么?

  • 如果我试图写入脚本的目录或任何其他目录,则错误是相同的。权限似乎是对的。所有东西都是755,根所有者。我尝试将“my_custom_dir”所有者更改为www-data(apache用户),但没有任何区别。 它“死”在第一线。日志上的错误是“在/usr/lib/cgi-bin/script.cgi拒绝权限”