2013-05-09 3 views
0

APK 다운로드를 시작하는 PHP 스크립트로 리디렉션되는 버튼이있는 페이지가 있습니다 ($ androidPackage는 파일 이름이고 $ 패키지는 절대 경로를 포함합니다).Android 브라우저에서 APK 다운로드가 작동하지 않습니다.

header('Content-Description: File Transfer'); 
    header('Content-Type: application/vnd.android.package-archive'); 
    header('Content-Disposition: attachment; filename=' . $androidPackage); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($package)); 
    ob_clean(); 
    flush(); 
    readfile($package); 
    exit; 

이 방법은 여러 Android 기기, 모든 주요 데스크톱 브라우저 및 일부 Android 기기의 스톡 브라우저에서 Chrome에 사용할 수 있습니다. 그러나 내 휴대 전화 (HTC Rezound) 및 Galaxy Tab 2 (주식 브라우저)에서 버튼을 짧게 누르면 다운로드가 작동하지 않습니다. 시작되지는 않습니다. 표시되는 컨텍스트 메뉴에서 '열기'를 선택한 다음 버튼을 길게 누르면 스톡 브라우저에서 APK를 다운로드 할 수 있습니다. 다운로드가 주식 브라우저에 대한 짧은 언론으로 시작되지 않는 이유에 대한 아이디어가 있습니까?

편집 :

나는이 다운로드에 연결하는 데 사용 버튼을 iframe에 위치 함을 언급해야한다. 대신 문서를로드 할 때 iframe에 스크립트 소스를로드하는 대신 document.location.href = (스크립트 URL 다운로드)를 수행하면 짧은 다운로드로 다운로드가 작동합니다. 주식 브라우저가 iframe을 처리하는 방법과 관련이 있습니까? 페이지와 해당 스크립트가 가리키는 스크립트는 동일한 도메인에 있습니다.

답변

1

문제는이 iframe에 있다고했다. 바로 저를 고정 This question's answer 당, 다운로드를 가리키는 앵커 태그에

target="_blank" 

를 추가.

1
octet-stream에 콘텐츠 형식을 변경

:

header('Content-Type: application/octet-stream'); 
+0

원래이 콘텐츠 유형을 설정하고 동일한 동작을 관찰했습니다. – Dan

관련 문제