2013-05-24 1 views
0

"강제로 다운로드"작업을 생성하는 동안 컨트롤러에서 생성 된 모든 응답에 UTF-8 BOM ()이 포함되어 있음을 발견했습니다. 이것은 일반 페이지와 관련이 없지만 다운로드 한 파일은 JPG 또는 ZIP이 여러 Windows보기 소프트웨어에서 손상된 것으로보고되므로 바람직하지 않습니다. 따라서 주요 목표는 컨트롤러 출력에서 ​​BOM을 제거하는 것입니다. Symfony2 컨트롤러 응답에서 UTF-8 BOM 제거

는 지금까지 내가 이런 짓을했습니다

1을 사용하여 승리 그렙를 내 사이트에있는 모든 파일에 BOM 청크를 검색 할 수 있습니다. 결과는 0입니다.

2 - 동일한 웹 서버에서 symfony가 아닌 test.php를 만들고 클라이언트에서 출력을 확인하십시오. BOM이 없습니다.

아이디어가 있으십니까? 사전에

감사합니다, Z

UPDATE : 테스트 코드 1. 결과 JPG는 BOM이 포함되어 있습니다.

public function downloadAction(Request $request){ 
    $filename= 'test.jpg'; 
    $response = new Response(file_get_contents($filename)); 
    $response->headers->set('Content-Type',mime_content_type($filename));   
    $response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '"'); 
    return $response; 

}

테스트 코드 2. 결과 페이지에는 BOM이 포함되어 있습니다.

public function downloadAction(Request $request){ 
echo 'hello world.'; 
exit; 

}

UPDATE2이 : 난 그냥이 시도 : 처음부터 새로운 symfony2 프로젝트를 만들고 같은 IDE를 사용하여 테스트 컨트롤러/액션을 추가하고, 무엇을 추측 : NO BOM..so, 내 생각을 내 심포니 사이트 내부에서 응답을 가로 채고 BOM 청크를 추가하는 것입니다.

+0

조치 코드를 표시 할 수 있습니까? – cheesemacfly

+0

두 테스트 코드를 모두 포함하도록 답변을 업데이트했습니다. – Zilos

+0

어제이 답변에서 몇 가지 솔루션 제안 (일명 BOM 청크 발견, 삭제)을 제공했습니다. 슬프게도 질문 작성자가 질문을 삭제했습니다 ... http://stackoverflow.com/questions/16719271/symfony2-forcing-jpg-download-returns-corrupted-file/16719624?noredirect= 1 # comment24081085_16719624 – nifr

답변

0

PEAR에서 LocalizeRoute.php twig 확장으로 유명한 UTF-8 BOM이 추가되었습니다. 필자의 특별한 경우 Symfony는이 파일을 통해 모든 응답을 필터링하고 전달 된 모든 페이지에 BOM 청크를 추가합니다. LocalizeRoute.php에서 BOM을 제거하면 문제를 해결할 수있었습니다. BOM 검색 제안을위한 nifr에 대한 크레딧. 빈 서버의 도구 인 WinGrep을 사용하여 전체 서버를 통해 이진 검색을 실행합니다. 고마워.