看板 PHP 關於我們 聯絡資訊
客戶的網站為多國語系 所以在後台上傳檔案時,都將其檔案更改檔名為數字 但客戶希望下載時可以還原本來的檔名 所以我用了語法讓下載該檔案時可以結合他原本的檔名 但經過測試,除了英文以外的語系 在IE使用時檔名會變成亂碼,Firefox、Chrome、Opera、 Safari都沒問題 想說是不是IE先天條件就不行存取非英文檔名,但我在Server設一個直接連結中文檔名的 超連結 IE又可以正確的下載中文檔名檔案 不知道是否可以在PHP端這邊透過宣告使IE可以正常下載 <?php if (isset($_GET['download'])) { $source = 'test.rar'; $name = '測試'; header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=$name.rar"); readfile($source); exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>download</title> </head> <body> <a href="測試.rar">test</a><br /> <a href="test.php?download=1">download</a> </body> </html> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.163.57
sjrom:抓agent判斷是IE browser的話urlencode($name).. 07/16 20:32
water2924:判斷一下客戶端的Browser, 如果是IE了話用iconv轉成big5 07/19 13:55
water2924:if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) 07/19 13:58
water2924:{ 07/19 13:58
water2924:header('Content-Disposition: attachment; filename="' 07/19 14:00
water2924:.iconv('utf-8','big5',$file_name).'"'); 07/19 14:01
water2924:可以參考這篇 #1BAoOoxZ (PHP) 07/19 14:04
chan15:轉big5可以解決,但因為是多國語言,所以還有日文之類的 07/20 12:32
chan15:不知道有沒有一勞永逸的方法 07/20 12:32
water2924:那就用1F的方法吧 XD 我以為只有中文 07/20 18:20
water2924:把iconv改成一樓的 urlencode 07/20 18:25
chan15:目前使用urlencode這個方式解決 07/23 16:46