간단히 말해 CakePHP 컨트롤러에서 CSV 파일을 생성하고 다운로드하려고합니다. CSV를 생성하는 데 아무런 문제가 없으며 모든 것이 4096 바이트 이상의 응답까지 작동합니다.응답이 커질 때 CakePHP에서 Content-Type 설정
다음 컨트롤러는 문제를 보여
class TestTypeController extends Controller {
public function csv($size = 100) {
# set the content type
Configure::write('debug', 0);
$this->autoRender = false;
$this->response->type('csv');
# send the response
for ($i = 0; $i < $size; $i++)
echo 'x';
}
}
내가 http://baseurl/test_type/csv/4095
전화
text/csv
입니다. 내가
http://baseurl/test_type/csv/4096
를 호출 할 때
HTTP/1.1 200 OK
Date: Tue, 05 Jun 2012 14:28:56 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3.1
Content-Length: 4095
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/csv; charset=UTF-8
이 파일을 화면에 인쇄되고, 응답 헤더는 다음과 같습니다 : 응답 헤더는 콘텐츠 인코딩 Gzip으로 압축 시작되는 분명히
HTTP/1.1 200 OK
Date: Tue, 05 Jun 2012 14:28:53 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3.1
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 38
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
, 4kB의 한계입니다 응답. 나는 Content-Type이 반응하는 방법에 익숙하지 않지만, 분명히 남아 있기를 바란다. text/csv.
RequestHandlerComponent
을 사용하여 응답 유형을 관리 할 때도 동일한 문제가 발생합니다.
저는 CakePHP 2.2.0-RC1을 사용하고 있습니다. 그러나 stable 2.1.3에 문제가 있는지 확인했습니다. 어떤 아이디어? 올바른 방향의 포인터?
나는 찌르고, Cake가 콘텐츠 길이에 따라 헤더를 변경하는 것을 보지 못한다. 아파치 구성 문제일지도 모릅니다. 이 링크를 확인하고 설정이 유형을 추가/변경하는지 확인하십시오. http://httpd.apache.org/docs/2.0/mod/mod_deflate.html – jeremyharris