簡體   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