동적 .csv 파일의 내용을 구문 분석하려고합니다. 그러나, (분명 푸딩 파일 이름 등 포함)이 코드 :Content-disposition : attachment를 사용하여 파일 내용보기
$socket = fsockopen("www.example.com", 443);
fwrite($socket, "GET /dynamicCsv.csv?param=value HTTP/1.1\r\n");
fwrite($socket, "Host: www.example.com\r\n");
fwrite($socket, "Connection: close\r\n");
fwrite($socket, "\r\n");
while(!feof($socket)) echo fgets($socket);
는 ... 그냥 파일을 다운로드합니다. 명령 줄에서 OpenSSL을 사용
나는 똑같은 요청을 입력하고 얻을 수있는 것은 다음과 같은 응답 헤더는 다시 전송 :
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-disposition: attachment; filename=dynamicCsv.csv
Pragma: public
Cache-Control: max-age=0
Set-Cookie: SESSIONID=ASDFUHN023UIN0F; Path=/; Secure
Content-Type: text/csv;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 04 Feb 2010 16:53:00 GMT
자동으로 내가 substr
를 사용하여 첫 번째 문자를 잘라하는 것을 시도했다 파일 다운로드를 피하기 위해 브라우저가 현재 문서의 헤더 세트로 fgets
의 응답 결과를 보았 으면 좋겠다. 그것은 작동하지 않았다. 동일한 아이디어를 추구하면서 소켓을 열기 전에 많은 줄 바꿈을 삽입하려고 시도했으나 작동하지도 않았다.
내 두 가지 질문은 다음과 같습니다
는- 왜 지구에 브라우저가 파일을 다운로드해야한다고 생각합니까?
- 어떻게 중지시킬 수 있습니까?
크롬은 지금까지만 사용해 왔지만 차이가 나는 이유는 알 수 없습니다. 당신은 cURL 또는 그것을위한 someother wrapper 사용을 고려할 수
많은 감사, 안드레아스
스크립트를 실행하면 다운로드 파일 대화 상자가 중단되어 아무 것도 출력하지 않습니다. 그 맞습니까? –
사실, 저는 여기서 크롬에서 다소 흥미로운 작품을 발견했다고 생각합니다. 그것이하는 것은 출력하고 싶은 파일 만 다운로드한다는 것입니다. 소켓을 열고 요청하기 전에 아무것도 출력하지 않으면 예상대로 화면에 표시됩니다. 그러나 Firefox에서는 ssl을 지정하지 않고 ascii 이외의 문자를 몇 개만 출력합니다. 포트 80에서 nc'ing하면 동일한 결과가 나타납니다. Chrome은 소켓 응답을 별도로 구문 분석하여 두 프로토콜 (http 및 https). 좀 더 철저한 조사가 필요할만한 가치가 있습니다. –