繁体   English   中英

Codeigniter文件上传,不带扩展名

[英]Codeigniter File upload with no extension

允许的类型是*。 因此,我可以使用Codeigniter Do Upload功能上传任何文件。 但是问题是当文件没有扩展名时,文件名本身就变成了扩展名。 就像filename是xyz一样,那么上传的文件将是xyz.xyz。我想要的是文件。 扩展名在那里就没有问题。 非扩展文件的唯一问题。

为了简单的解决方案,您可以修改codeigniter上载库(/system/libraries/Upload.php)。 在get_extension()函数的开头,添加以下行:

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

永远不要尝试编辑核心系统库,但是您可以扩展该库并更改所需的内容,当我尝试从表单数据上载blob时遇到了类似的问题,然后我发现codeigniter上载库提取了扩展名是上传文件的名称,而不是mime类型,唯一的dummp解决方案是接受'*',但是您将遇到很多其他问题,默认情况下将允许所有类型。 无论如何,您都可以将上传库扩展为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')并避免了传递不带扩展名的图像名称的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM