2011-04-18 1 views
0

파일 다운로드 :이 다운로드되고있는 출력 .. 그리고 이미지의 일부입니다의 브라우저에서 모든 ASCII 문자를 보여주는 코드 (PHP)를 통해 zip 파일을 다운로드하는 동안 지퍼

zip successfulPKZAq>.…u[ü¹…¿;../papa/control/other_image/2965Golf Cart Pencil Holder.jpg¤ýwTSOø7ŠÆŠ€ˆ EAˆJi*UZT¤—Q©!"[email protected]é[email protected]@@¤I”€ÔH$” %PB€$\¾ï=ëܵîzÏZçüN²æ¯ì콟™g>eföìÃ߇ó€ó†zz€cÇ€cG_À! ©c®{ÏÒÔ\ýŠ»‹œçW÷+·äo^¹àõq¿b`¨Åð±®þ•@•ÛÒ²W|ž>‡ú_ѺrëæMŽÃi€Îѹþß}þ;ɱÿ×'ùà9sÌõ˜Ç‰c×ÇyŽà9vØEyêÿ{àÿø;~âä©ÓlgØ98Àœ?vâÄñ“'N:yòè×°£ß'y....... 

수 있습니다 도와 줘?

+0

서버가 리소스에 대해 잘못된 content-type을 보내는 것처럼 보입니다. 링크를 마우스 오른쪽 버튼으로 클릭하고 다운로드하려면 "다운로드"를 클릭하십시오. –

답변

1

내 첫 번째 추측은 서버가 response header에 잘못된 콘텐츠 형식을 반환하고있는 것입니다. 서버가 브라우저에 내용이 텍스트임을 알리는 경우 브라우저는이를 텍스트로 표시하려고 시도합니다. 파일을 제공 할 때 PHP 코드에서 다음과 같이 뭔가를 추가하려고 :

header('Content-type: application/zip'); 

명심 HTTP를 통해 데이터를 전송할 때 절대적으로의 개념이 없다 "파일." 각각 헤더와 데이터를 포함하는 요청과 응답이 있습니다. 클라이언트 (브라우저)는 로컬 시스템의 API를 사용하여 데이터를 파일로 저장하도록 선택할 수 있으며 파일의 이름을 제안 할 수도 있습니다. 그러나 그것이받는 것은 "파일"이 아닙니다. 이 경우 응답 헤더는 보내는 데이터에 대해 올바르지 않습니다.

+0

아니, 그는 그의 코드 어딘가에 "zip succesful"을 표시하기 때문에 브라우저에 현재의 컨텐츠를 푸시해도 손상 될 것입니다. – wimvds

+0

@wimvds : 아, 잘 잡으세요. 그래, 그의 출력 스트림은 지퍼를 보낼 때 깨끗하지 않습니다. 그는 현재 출력에 추가하고 있습니다. – David

2

zip을 생성하는 일부 코드에서 "zip successful"으로 표시되기 때문에 브라우저는 파일을 처리 할 수 ​​없습니다 (어쨌든 응용 프로그램/zip 헤더 사용에 관계없이 손상 될 것입니다) . 먼저 코드를 정리하고 ZIP 보내기를 시작하기 전에 브라우저에 아무 것도 출력하지 않도록하십시오. 그리고 실제로 클라이언트로 우편을 밀어 다음을 추가

$ fullPathToFile zip 파일의 전체 경로입니다
header('Content-type: application/zip'); 
header('Content-Disposition: attachment; filename="' . basename($fullPathToFile) . '"') 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize($fullPathToFile)); 
header('Cache-Control: private'); 
ob_clean(); 
flush(); 
readfile($fullPathToFile); 
exit; 

(즉 /path/to/yourzip.zip.).

다른 예는 readfile 설명서를 참조하십시오.

관련 문제