2016-06-20 4 views
1

간단한 질문입니다. 아마도 백만 번 질문을 받았지만 검색을 해본 결과이 작업을 수행하는 데 더 이상 익숙하지 않았습니다.PHP에서 제공하는 브라우저에서 파일 열기

브라우저를 통해 사용자에게 파일을 제공하는 UserFrosting 프레임 워크 내에 PHP 스크립트가 있습니다. 'Open'Institand and Download를 선택하면 해당 파일을 브라우저에서 열어 보겠습니다.

문제는 올바르게 열리는 것은 텍스트 파일뿐입니다. 다른 것 (지금까지 테스트 된 PDF 및 JPG)은 PDF 또는 이미지로 해석되는 대신 ASCII/깨진 코드의 페이지로 열리고 있습니다.

header('Content-Type: '. $mime); 
header('Content-Length: ' . filesize($diskname)); 
header('Content-Disposition: inline; filename=' . $savename); 
return readfile($diskname); 

$mime 함수를 통해 설정 파일의 MIME 타입, 그래서 지금까지 볼려고 파일에 대한 application/pdf 또는 image/jpeg 수 :

여기 내가 사용하는 코드입니다.

파일이 제대로 열리지 않는 이유는 누구입니까?

UPDATE 내가 대신 application/jpeg 또는 그것이 내가 사용하고 코드에 따라 설정 한 것을 application/pdftext/html;charset=UTF-8의 콘텐츠 형식을지고있어, 응답 헤더를 확인 가졌어요. 이것이 UserFrosting 문제인지 궁금합니다.

+1

"응용 프로그램/pdf 또는 이미지/jpeg 일 수 있습니다."- 서버에서 실제로 보내고있는 내용인지 확인 했습니까? – Quentin

+0

잘 $ mime은 파일에 따라 application/pdf 또는 image/jpeg 중 하나로 설정되고 있습니다. 내 브라우저의 debug-fu는별로 좋지 않습니다. Firefox를 사용하면 파일이 새 탭에서 열리고 오류 메시지가 나타납니다. "HTML 문서의 문자 인코딩이 선언되지 않았습니다."Content-Type이 어떻게 든 손실되었다고 가정하고 있습니까? – nockieboy

+0

개발자 도구를 엽니 다. 네트워크 탭을 살펴보세요. 모든 요청과 응답이 표시되고 헤더와 원시 콘텐츠를 검토 할 수 있습니다. – Quentin

답변

1

그래, 문제가 해결되었습니다. 내가 의심했던 것처럼, 그것은 UserFrosting 프레임 워크 또는 더 구체적으로 Slim과 관련이 있습니다. 대신 header('Content-Type: image/jpeg');를 사용하여 설정 헤더의

, 나는 다음을 수행 했어야 :

$this->_app->response->headers->set('Content-Type', $mime); 

문제 해결. :)

0

저는 평판의 원인에 대해 언급 할 수 없으므로, 이것이 귀하의 문제라고 100 % 확신하지는 않더라도 대답해야 할 것입니다.

문제는 PHP 파일로 인해 많은 문제가 발생할 수 있습니다.

<--- this little empty line 
<? 
code goes here 
?> 
<--- or this one 

표시된 빈 줄은 머리글을 손상시킬 수 있습니다. PHP 코드 대신 내용으로 해석되는 빈 줄에 대해 모든 파일을 검사 했습니까?

경고를 사용하면이 문제에 도움이 될 수 있습니다. 헤더를 설정하기 전에 내용이있는 경우 일반적으로 정확히 이것을 설명하는 경고가 표시됩니다.

우리 회사에서는 한 번 이걸 가지고 있었고 그 이유는 발견 할 수있는 하루 종일 우리 개발자 3 명이었습니다.

편집 : "HTML 문서의 문자 인코딩이 선언되지 않았습니다." 사실 내 진술에 밑줄을 긋는다. 어쨌든 100 % 확신 할 수 없습니다.

+0

php.ini에서'E_ALL'로 설정된 오류보고가 있습니다. 따라서 생성 될 경우 경고가 표시되어야한다고 가정하고 있지만 오류 로그에 아무것도 표시되지 않습니다.? – nockieboy

+0

나머지는 헤더의 내용은 그대로입니다. 변경되는 콘텐츠 유형입니다./ – nockieboy

+0

글쎄, 이것 좀 봐 : [link] (http://stackoverflow.com/a/2649879/6479510). 같은 문제에 대한 더 깊은 정보 content-type을 사용합니다. 나는 당신의 파일 중 하나에 어느 정도 출력이 있어야한다는 것을 확신한다. –

관련 문제