圖片上傳 - PHP上傳中文名圖片失敗?

來源:互聯網
上載者:User
我程式裡面有個PHP上傳圖片的功能,但是放在伺服器上上傳中文名稱的圖片,圖片不能顯示出來,看了目錄中的圖片,是上傳圖片之後存在目錄裡面亂碼了。下面是My Code,不知道是哪裡出了問題

`public function _upload(){

    $type = trim($_POST['uptype']);    $callback = trim($_POST['upcallback']);    if($type=='image'){        $ext = getFileExt($_FILES['upfile']['name']);        if(!file_exists(DIR_UPLOAD.'/images/'.date("Ymd"))){            makeDir(DIR_UPLOAD,'/images/'.date("Ymd"));        }        if($ext =='jpg' || $ext =='png'  || $ext =='gif' || $ext =='doc' || $ext =='txt' || $ext =='pdf' || $ext =='ico' ){            $upfile = DIR_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);            $upfilepath = '/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);            $upfileurl = URL_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);            move_uploaded_file($_FILES['upfile']['tmp_name'],$upfile);            $filecg = trim($_POST['filecg']);            if(!$filecg){                $filecg = 1;            }            if($callback){                echo '';            }            die();        }    }    echo '';

我的HTML 中 使用的均是UTF-8`

我這個如何修改才能上傳中文檔案名稱圖片呢?
我的伺服器是win2003 是不是因為伺服器win2003 是gbk的關係呢

回複內容:

我程式裡面有個PHP上傳圖片的功能,但是放在伺服器上上傳中文名稱的圖片,圖片不能顯示出來,看了目錄中的圖片,是上傳圖片之後存在目錄裡面亂碼了。下面是My Code,不知道是哪裡出了問題

`public function _upload(){

    $type = trim($_POST['uptype']);    $callback = trim($_POST['upcallback']);    if($type=='image'){        $ext = getFileExt($_FILES['upfile']['name']);        if(!file_exists(DIR_UPLOAD.'/images/'.date("Ymd"))){            makeDir(DIR_UPLOAD,'/images/'.date("Ymd"));        }        if($ext =='jpg' || $ext =='png'  || $ext =='gif' || $ext =='doc' || $ext =='txt' || $ext =='pdf' || $ext =='ico' ){            $upfile = DIR_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);            $upfilepath = '/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);            $upfileurl = URL_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);            move_uploaded_file($_FILES['upfile']['tmp_name'],$upfile);            $filecg = trim($_POST['filecg']);            if(!$filecg){                $filecg = 1;            }            if($callback){                echo '';            }            die();        }    }    echo '';

我的HTML 中 使用的均是UTF-8`

我這個如何修改才能上傳中文檔案名稱圖片呢?
我的伺服器是win2003 是不是因為伺服器win2003 是gbk的關係呢

我自己想了個辦法、
就是把替換掉文字
$upfilepath = '/images/'.date("Ymd").'/'.date("His").''.preg_replace('[^a-z0-9-_.]i','',$_FILES'upfile');

雖然可以 顯示圖片了, 但是很勉強

這個與http協議有關。上傳之前抓個包,看看你的程式是gbk為主還是utf-8為主。確定之後再去對應的iconv。

伺服器是linux?看看是不是支援中文

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.