[討論] 中文檔名下載問題!字元數多寡有影響?

看板PHP作者 (桑原)時間10年前 (2014/04/21 09:28), 編輯推噓1(107)
留言8則, 6人參與, 最新討論串1/1
各位好 小弟的程式碼如下 非常制式的下載程式 <?php if($_GET['f']!=null){ $file=iconv('utf-8','big5',$_GET['f']);//檔案名稱 $url="upload/"; //路徑位置 header("Content-type:application"); header("Content-Disposition: attachment; filename=".$file); readfile($url.str_replace("@","",$file)); exit(0); }else{ echo "找不到相關檔案...."; } ?> 因為存進去server的時候,使用者要求一定要用中文... 所以也就只好存中文, 結果發現要下載的時候. 如果中文字超過6個字會無法正常顯示. 下載的檔案會變2kb. 若是6個字元以內就非常正常可以開啟. 請問這是什麼原因呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.195.130 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1398043694.A.8FC.html


04/21 10:15, , 2F
路徑對嗎!? is_file檢查一下是不是有檔案吧!
04/21 10:15, 2F

04/21 10:22, , 3F
我自己測試很正常,你描述的狀況只有在無檔案發生。
04/21 10:22, 3F

04/21 10:33, , 4F
一般會用檔名存資料庫,檔案用純英數字元的方式,下
04/21 10:33, 4F

04/21 10:34, , 5F
這種檔名不是要用mb_encode_mimeheader()嗎
04/21 10:34, 5F

04/21 10:34, , 6F
載時在重新命名還原檔名就好了
04/21 10:34, 6F

04/21 14:00, , 7F
把 '@' 取代掉的原因是什麼?
04/21 14:00, 7F

04/21 17:41, , 8F
一樓正解,通常IE有問題,其他browser是ok的
04/21 17:41, 8F
文章代碼(AID): #1JL7GkZy (PHP)