作者chan15 (ChaN)
看板PHP
標題[請益] PHP強迫下載問題
時間Fri Jul 16 19:46:42 2010
客戶的網站為多國語系
所以在後台上傳檔案時,都將其檔案更改檔名為數字
但客戶希望下載時可以還原本來的檔名
所以我用了語法讓下載該檔案時可以結合他原本的檔名
但經過測試,除了英文以外的語系
在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
→ 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