我程式裡面有個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?看看是不是支援中文