0
如何強制下載其文件名包含的字符數超過英文的文件,例如瑞典語,挪威語等öäå。如果文件不包含öäå,則工作完好,但如果文件名包含瑞典語字符,則不會。強制使用外來字符下載文件
以下是我用來打開文件的代碼。
$file_id = $_GET['f'];
$sql = " SELECT * ".
" FROM attachment ".
" WHERE attachment_id = ".$file_id." ".
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$filename = $row['filename'];
$USER_ID = $row['user_id'];
$DIRECTORY_ID = $row['directory_id'];
$target_path = "upload/".$USER_ID."/".$DIRECTORY_ID."/";
// And the function is :
function Download($path, $speed = null)
{
if (is_file($path) === true)
{
$file = @fopen($path, 'rb');
$speed = (isset($speed) === true) ? round($speed * 1024) : 524288;
if (is_resource($file) === true)
{
set_time_limit(0);
ignore_user_abort(false);
while (ob_get_level() > 0)
{
ob_end_clean();
}
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Type: application/octet-stream');
header('Content-Length: ' . sprintf('%u', filesize($path)));
header('Content-Disposition: attachment; filename="' . basename($path) . '"');
header('Content-Transfer-Encoding: binary');
while (feof($file) !== true)
{
echo fread($file, $speed);
while (ob_get_level() > 0)
{
ob_end_flush();
}
flush();
sleep(1);
}
fclose($file);
}
exit();
}
return false;
}
Download($target_path.$filename);
我用:
$filename = urlencode($filename);
$filename = htmlentities($filename, ENT_QUOTES, "UTF-8");
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
和
$path = iconv('UTF-8', 'ASCII//TRANSLIT', $path)
但沒有什麼工作。 我想事先感謝你,任何幫助你可以給予將不勝感激。喬納斯。
謝謝Amed爲您的迴應。我應該把頭部放在哪裏?與那些另外的標題或其他地方一起?我把它與函數內部的這些頭文件一起調用,但它不起作用。這是同樣的問題。再次感謝你。 –
與您的標題功能在頂部:) 並確保您的PHP文件已被保存爲utf-8編碼。 – Amed