2013-03-29 5 views
2

휴대 전화에서 .vcf 파일을 다운로드 할 수있는 웹 사이트를 만들고 있습니다.이 파일은 내 브라우저에 저장되어 있지 않지만 데이터베이스에 저장된 데이터를 사용하여 생성됩니다. 내가 파일 abc.php 있다고 가정PHP : 휴대 전화에서 강제 다운로드가 작동하지 않습니다.

: 이제

<?php session_start(); 
?> 
<?php 
if($_SESSION[abc] != some_value) 
{ 
    echo "not ok"; 
    exit(); 
    } 
else 
{ 
    header("Content-Description: File Transfer"); 
    header("Content-Type: text/vcard"); 
    header("Content-Disposition: attachment; filename=contact.vcf"); 
    echo "All vcard details in the standard vCard format...... 
    ....... 
    ....."; 
    session_destroy(); 
    exit(); 
} 

를,이 작업을 완벽하게 정상적으로 컴퓨터 브라우저 (IE, 크롬, 등.)하지만 난 (모바일 브라우저에서 같은 일을하려고 할 때 안드로이드, 윈도우 폰), 작동하지 않습니다.

때로는 내용이 "좋지 않음"인 파일 abc.html (abc는 내 PHP 파일의 이름 임)을 생성하거나 때로는 내용이 "not ok"인 contact.vcf/contact.html 파일을 만듭니다. (여기서 "not ok"는 세션 변수가 어떤 값과 같지 않을 때 인쇄하는 선입니다)

컴퓨터에서는 작동하지만 스마트 폰에서는 작동하지 않는 이유를 이해할 수 없습니다. 도와주세요. 그것이 모바일 브라우저에서 작동하지 않으면 내 웹 사이트의 전체 아이디어가 손실됩니다! 덕분에 !

편집 : 나는 어떻게 든, 난()로 세션을 사용하고있었습니다 내 루프에서 종료()하기 전에 문제 partially.Just를 해결 한

; 이제 왜 그런지 모르겠지만 모든 것이 끝나면 컨트롤이 다시 맨 위로 이동하여 "if"조건을 확인하고 세션이 파손 되었기 때문에 조건이 사실로 바뀌 었습니다. "not ok"가 내 파일에 출력됩니다.

이제 session_destroy()를 제거하면 잘 작동합니다 (휴대 전화에서도).

컨트롤이 정상으로 돌아가는 이유는 무엇입니까?

+0

스마트 폰은 .vcf 파일을 허용합니까? – H2ONOCK

답변

0

올바른 헤더를 설정하지 않은 것처럼 보입니다. PHP에서 이것을 사용해보십시오

header('Content-Description: File Transfer'); 
header('Content-Type: text/vcard'); 
header('Content-Disposition: attachment; filename=contact.vcf'); 
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: ' . $length); //Set content length here 
ob_clean(); 
flush(); 
echo $content; //echo the content 
exit; 
+0

도움을 주셔서 대단히 감사합니다! – nfsleo07

+0

나는 그것을했다. 나는 아직도 작동하지 않는 무엇을 또는 ​​이해하고있다 그러나 나는 끝에서 session_destroy()를 제거하고 지금 작동하고있다. – nfsleo07

+0

이 답변은 불완전하고 설명이 부족합니다. Android 및 iOS7에서만 작동합니다. 누락 된 것들 :'$ length = filesize ('contact.vcf'); $ content = file_get_content ('contact.vcf'); – Raptor

관련 문제