【问题标题】:Codeigniter File upload with no extension无扩展名的 Codeigniter 文件上传
【发布时间】:2015-02-18 04:50:30
【问题描述】:

允许的类型是 *。因此,我可以使用 Codeigniter Do Upload 功能上传任何文件。 但问题是当文件没有任何扩展名时,文件名本身就会成为扩展名。像文件名是 xyz 然后上传的文件将是 xyz.xyz 。我想要文件原样。当扩展存在时没有问题。只有非扩展文件的问题。

【问题讨论】:

  • 嘿检查检查扩展名的功能部分,如果没有找到扩展名,则使用文件名作为扩展名,你能上传上传功能的代码吗?

标签: php codeigniter file-upload frameworks


【解决方案1】:

为方便解决,您可以修改codeigniter上传库(/system/libraries/Upload.php)。在 get_extension() 函数的开头,添加这一行:

if(strpos($filename, '.') === FALSE))return '';

【讨论】:

    【解决方案2】:

    永远不要尝试编辑核心系统库,但是您可以扩展库并更改您需要的任何内容,当我尝试从表单数据上传 blob 时遇到类似的问题,然后我发现 codeigniter 上传库从上传的文件名中提取扩展名而不是 mime 类型,对此的唯一转储解决方案是接受 '*' 但是您将面临大量其他问题,并且默认情况下将允许所有类型。无论如何,您可以将上传库扩展为 MY_Upload 并通过添加如下一行来编辑 get_extension():

    public function get_extension($filename)
    {
        $x = explode('.', $filename);
    
        if (count($x) === 1)
        {
            $x = strtok(strstr($this->file_type, '/'), '/');    // get ext from mime
            return $x ? '.'.$x : '';
        }
    
        $ext = ($this->file_ext_tolower) ? strtolower(end($x)) : end($x);
        return '.'.$ext;
    }
    

    顺便说一句,我可以通过更改表单数据中的文件名来解决我的问题,如下所示:append('image', blob, 'image.png') 并避免了传递没有扩展名的图像名称的问题。

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 2013-09-17
      相关资源
      最近更新 更多