1

질문 : 브라우저에서 파일 이름을 변경하지 않고 웹 브라우저에서 사용자 컴퓨터로 파일을 다운로드 할 수 있습니까?브라우저에서 이름/확장명을 변경하지 않고 어떻게 파일을 다운로드하게합니까?

배경 : 셰어웨어 앱이 있으며 사용자가 라이선스를 구매하여 활성화 할 수 있습니다. 라이센스는 XML 파일이지만 확장자는 ".mlic"이 아니라 ".xml"입니다. mlic은 내 응용 프로그램이 인식하는 특별한 파일 확장명입니다. 사용자가 돈을 지불하면 mlic 파일과 관련 HTTP 헤더를 푸는 PHP 스크립트로 리디렉션됩니다. 내 스크립트는 아래에 있습니다.

문제점 : 일부 사람들은 파일 다운로드를 license.xml 또는 license.mlic.xml로 말하고 있으며이 파일을 어떻게 처리해야할지 모릅니다. 나는이 사람들이 사용하는 브라우저 나 OS를 모른다. 나는 복제 할 수 없다. 내 응용 프로그램은 Mac에서만 사용할 수 있으므로 OS X와 ​​관련이 있습니다.

해결책 : 이것에 대해 어떤 조치를 취할 수 있습니까? 명시 적으로 파일 확장명을 지정하는 HTTP 헤더가 있습니까?

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"license.mlic\""); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: " . $filesize($input_path)); 

ob_end_flush(); 
@readfile($input_path); 

답변

0

1) Content-Transfer-Encoding 및 Content-Description과 같은 쓸데없는/정의되지 않은 헤더 필드를 삭제하십시오.

2) 아니요. 브라우저가 감지하는 콘텐츠 형식에 따라 확장 프로그램을 조정하지 못하게 할 수 없습니다.

0

명시 적으로 파일 확장명을 지정하는 http 헤더가 있습니다. pdf 파일의 경우 "application/pdf", Excel 파일의 경우 "application/ms-excel"과 같이 content-Type을 설정해야합니다.

관련 문제