2013-08-08 4 views
1

내가 다운로드 파일을 만들 this 자습서를 참조 다운로드 그러나 나는
가 여기 내 예입니다 문제가PHP - 파이어 폭스를 사용하여 파일의 파일 이름

$file_url = "D:/my file name.doc" 

header('Content-Type: text/json; charset=UTF-8;'); 
header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=' . basename($file_url).""); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file_url)); 
ob_clean(); 
flush(); 
readfile($file_url); 

모든 게 잘 즉, 또는 크롬을. 하지만 firefox을 사용하여 파일을 다운로드 할 때. 파일 다운로드는 my이며 파일 이름은 무엇입니까? 그 고침을 고치는 방법

+0

readfile(urlencode($file_url));를 사용해보십시오. 필자는 브라우저가 파일 이름을 해석하는 방식을 바꿀 수 있다고 생각하지 않습니다 (FF가 오픈 소스이기 때문에 완전히 사실이 아닙니다). 'basename'에'str_replace'를 써서 공백을 예를 들어로 바꿉니다. 밑줄. – AmazingDreams

+1

내용 처리 헤더에서 견적을 닫지 않았습니다. 이것을 시도해보십시오 : header ('Content-Disposition : attachment; filename ='. basename ($ file_url). " '"); –

답변

2
header('Content-Disposition: attachment; filename="' .basename($file_url).'"'); 
+0

감사합니다. – LookAtMeNow

1

당신은 filename을 인용해야한다.

header('Content-Disposition: attachment; filename="' . basename($file_url) . '"'); 

편집 : 오타가있는 것으로 선택한 대답에 불과했습니다. 이제 해결했습니다.

+0

thant의 고마워요 – LookAtMeNow

1

먼저 첫 줄 끝에 ;이 누락되었습니다. 문제는 파일 이름에 공백이있는 것 같습니다. 대신 아마 때문에 공간의 readfile($file_url);

+0

thant의 고마워요 :) – LookAtMeNow

관련 문제