Heim  >  Artikel  >  Backend-Entwicklung  >  php强制下载文件的代码(解决IE下中文文件名乱码问题)

php强制下载文件的代码(解决IE下中文文件名乱码问题)

WBOY
WBOYOriginal
2016-07-25 08:54:47752Durchsuche
  1. $file_name = urlencode($_REQUEST['filename']);
  2. header("Pragma: public"); header("Expires: 0");
  3. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  4. header("Content-Type: application/force-download");
  5. header('Content-Type: application/vnd.ms-excel; charset=utf-8');
  6. header("Content-Transfer-Encoding: binary");
  7. header('Content-Disposition: attachment; filename='.$file_name);
  8. echo stripslashes($_REQUEST['content']);
  9. ?>
复制代码

解决PHP Header下载文件在IE文件名中文乱码: 一种是是把页面编码改成utf8。 另一种是对中文url进入urlencode编码。

下面来看解决方案的具体实现代码。 1,页面是utf-8编码:

  1. $filename = "中文.txt";
  2. $ua = $_SERVER["HTTP_USER_AGENT"];
  3. $encoded_filename = urlencode($filename);
  4. $encoded_filename = str_replace("+", "%20", $encoded_filename);
  5. header('Content-Type: application/octet-stream');
  6. if (preg_match("/MSIE/", $ua)) {
  7. header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
  8. } else if (preg_match("/Firefox/", $ua)) {
  9. header('Content-Disposition: attachment; filename*="utf8''' . $filename . '"');
  10. } else {
  11. header('Content-Disposition: attachment; filename="' . $filename . '"');
  12. }
复制代码

2,将文件名先urlencode一下再放入header。 代码:

  1. $file_name = urlencode($_REQUEST['filename']);
  2. header("Pragma: public"); header("Expires: 0");
  3. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  4. header("Content-Type: application/force-download"); //加入强制下载的头信息
  5. header('Content-Type: application/vnd.ms-excel; charset=utf-8');
  6. header("Content-Transfer-Encoding: binary");
  7. header('Content-Disposition: attachment; filename='.$file_name);
  8. echo stripslashes($_REQUEST['content']);
  9. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn