>  기사  >  백엔드 개발  >  Win7은 파일 접미사 이름을 표시합니다. PHP에서 파일을 강제로 다운로드하는 코드(IE에서 중국어 파일 이름이 왜곡되는 문제 해결)

Win7은 파일 접미사 이름을 표시합니다. PHP에서 파일을 강제로 다운로드하는 코드(IE에서 중국어 파일 이름이 왜곡되는 문제 해결)

PHP中文网
PHP中文网원래의
2017-04-01 16:33:301180검색

이 과정에서 발생하는 문제는 제출된 중국어 파일 이름을 헤더에 직접 넣으면 IE에서 깨져서 문제가 발생한다는 것입니다. 해결 방법은 파일 이름을 먼저 urlencode한 후 헤더에 넣는 것입니다. .

코드는 다음과 같습니다.

<?php 
$file_name = urlencode($_REQUEST[&#39;filename&#39;]); 
header("Pragma: public"); header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header(&#39;Content-Type: application/vnd.ms-excel; charset=utf-8&#39;); 
header("Content-Transfer-Encoding: binary"); 
header(&#39;Content-Disposition: attachment; filename=&#39;.$file_name); 
echo stripslashes($_REQUEST[&#39;content&#39;]); 
?>

IE에서 다운로드한 PHP 헤더 파일의 중국어 파일명을 해결하는 일반적인 방법은 두 가지가 있습니다. 하나는 페이지를 변경하는 것입니다. 인코딩을 utf8로 변경하고, 다른 하나는 페이지 인코딩을 utf8로 변경하는 것입니다. 하나는 중국어 URL에 대한 urlencode 인코딩을 입력하는 것입니다.
해결책 1(내 페이지는 utf-8로 인코딩됨):

코드는 다음과 같습니다.

$filename = "中文.txt"; 
$ua = $_SERVER["HTTP_USER_AGENT"]; 
$encoded_filename = urlencode($filename); 
$encoded_filename = str_replace("+", "%20", $encoded_filename); 
header(&#39;Content-Type: application/octet-stream&#39;); 
if (preg_match("/MSIE/", $ua)) { 
header(&#39;Content-Disposition: attachment; filename="&#39; . $encoded_filename . &#39;"&#39;); 
} else if (preg_match("/Firefox/", $ua)) { 
header(&#39;Content-Disposition: attachment; filename*="utf8&#39;&#39;&#39; . $filename . &#39;"&#39;); 
} else { 
header(&#39;Content-Disposition: attachment; filename="&#39; . $filename . &#39;"&#39;); 
}


해결책 2
파일 이름을 먼저 Urlencode한 다음 다음과 같이 헤더를 추가합니다.
코드는 다음과 같습니다.

코드는 다음과 같습니다.

<?php 
$file_name = urlencode($_REQUEST[&#39;filename&#39;]); 
header("Pragma: public"); header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header(&#39;Content-Type: application/vnd.ms-excel; charset=utf-8&#39;); 
header("Content-Transfer-Encoding: binary"); 
header(&#39;Content-Disposition: attachment; filename=&#39;.$file_name); 
echo stripslashes($_REQUEST[&#39;content&#39;]); 
?>

위는 win7 표시 파일 접미사 이름에 있는 파일을 강제 다운로드하는 코드입니다. php (IE 질문에서 왜곡된 중국어 파일 이름 해결), 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.