返回列表 發帖

中文檔名不能上傳的解決方案

  1. <html>
  2.     <head>
  3.         <title>檔案上傳</title>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.     </head>
  6.     <body>
  7.         <form action="" method="post" enctype="multipart/form-data">
  8.             請選擇上傳的圖片:<input type="file" name="file_input" /><br />
  9.             <input type="submit" name="send" value="送出" />
  10.         </form>
  11.         <?php
  12.             $upload_dir = './photo/';    //檔案上傳的目錄
  13.             $size_limit = 5*1024*1024*1024; //5GB
  14.             $arr_ext = array('.jpg', '.png', '.bmp', '.gif', '.tif', '.pcx', '.psd');    //設定允許上傳的副檔名
  15.             if(isset($_POST['send'])){    //判斷是否按下送出鈕, 且 $_POST['send'] 有值
  16.                 $file_name = strtolower($_FILES['file_input']['name']); //取得檔案的名稱 //strtolower 將英文字串轉為小寫
  17.                 $file_type = $_FILES['file_input']['type']; //取得檔案類型
  18.                 $file_size = $_FILES['file_input']['size']; //取得檔案大小
  19.                 $tmp_name = $_FILES['file_input']['tmp_name']; //取得檔案暫存路徑
  20.                 $ext = strrchr($file_name, '.'); //取得副檔名
  21.                  
  22.                 if(file_exists($tmp_name)){
  23.                     echo '存在';
  24.                 }else{
  25.                     echo '不存在';
  26.                 }
  27.                 /*echo $file_name.'<br />';
  28.                 echo $file_type.'<br />';
  29.                 echo $file_size.'<br />';
  30.                 echo $tmp_name;*/
  31.                 if(!is_uploaded_file($tmp_name)){//判斷使用者是否正常方式上傳
  32.                     echo '上傳失敗,沒有選取上傳檔案。';
  33.                 }else if($file_size > $size_limit){    //若使用者上傳的檔案大小大於設定值時
  34.                     echo '檔案太大。';
  35.                 }else if(!in_array($ext, $arr_ext)){    //判斷 $ext 是否在 $arr_ext陣列裡
  36.                     echo '上傳失敗,只允許 '.implode(',', $arr_ext).' 副檔名';
  37.                 }else if(move_uploaded_file($tmp_name, $upload_dir.iconv('utf-8', 'big5', $file_name))){//檢查上傳狀態
  38.                     echo '上傳成功';
  39.                 }else{
  40.                     echo '上傳失敗';
  41.                 }
  42.             }
  43.             
  44.         ?>
  45.     </body>
  46. </html>
複製代碼
May

返回列表