上傳含有中文名文件成功後打不開文件,因為在開啟文件時發現檔名是亂碼的,怎麼解決?
生如夏花
生如夏花 2019-04-26 09:37:08
0
3
1338
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php    
    if($_FILES["file"]["error"]){
        echo "<script>alert('没有选择文件!');location.href='http://127.0.0.1:88/seek_system/admin/help/wenjianceshi.php'</script>";
    }else{
        if(($_FILES["file"]["size"]<10240000)and($_FILES['file']['type']=='application/pdf'))
        {
            //防止文件名重复
            $filename="./upfile/".date('YmdHis',time()+8*60*60).'-'.$_FILES["file"]["name"];
            //转码
            $filename=iconv("UTF-8","gb2312",$filename);   
            if(file_exists($filename)){           
                echo "该文件已存在";
            }else{                        
                //保存文件
                move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
                echo "<script>alert('上传成功!');location.href='http://127.0.0.1:88/seek_system/admin/help/wenjianceshi.php'</script>";
            }
        }else{    
            echo "<script>alert('只能上传PDF文件!');location.href='http://127.0.0.1:88/seek_system/admin/help/wenjianceshi.php'</script>";
        }
    }

上傳檔案的程式碼如上。我上傳包含中文名的文件時經過轉碼已經可以成功上傳文件了,並且發現上傳的文件名也能以中文正確顯示,但是問題是我點擊文件名打不開文件,在地址欄發現文件名的中文部分是亂碼的,要怎麼解決轉碼後是中文名又可以正常開啟檔案呢?

生如夏花
生如夏花

全部回覆(2)
Alone88

試試看你儲存檔名的時候使用gbk編碼,然後讀取檔名再轉成utf8

生如夏花
如果我把$filename=iconv("UTF-8","gb2312",$filename);换成了$filename=iconv("gb2312","UTF-8",$filename);
发现上传成功后可以正常打开文件了,但是又出现了在浏览器上显示的文件名是乱码的。
请问结合我上面发的,这个问题该怎么解决呢?有好解决方法的请赐教。


#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!