2014-05-09 36 views
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) 

但沒有什麼工作。 我想事先感謝你,任何幫助你可以給予將不勝感激。喬納斯。

回答

0

使用本:

<?php 
header('Content-Type: text/html; charset=utf-8'); 
?> 

,並確保你的PHP源文件保存爲UTF-8。

+0

謝謝Amed爲您的迴應。我應該把頭部放在哪裏?與那些另外的標題或其他地方一起?我把它與函數內部的這些頭文件一起調用,但它不起作用。這是同樣的問題。再次感謝你。 –

+0

與您的標題功能在頂部:) 並確保您的PHP文件已被保存爲utf-8編碼。 – Amed