, 당신은 다음과 같은 중요한 "사실"을 알 수 있습니다 :
HTTP/1.1 200 OK
Content-Type: image/x-icon
Content-Length: 4397
Connection: keep-alive
Date: Mon, 06 Oct 2014 23:36:51 GMT
Content-Encoding: gzip
Expires: Sun, 17-Jan-2038 19:14:07 GMT
Last-Modified: Mon, 06 Oct 2014 23:35:34 GMT
...
의미 : 그것은 gzip으로 압축 된 것, 정기적 아이콘 아니다. 따라서 file_get_contents
을 사용하여 다운로드하려고하면 아이콘이 아닌 문자열이 표시됩니다. (브라우저는 그 자주 압축하는 데 사용 된 데이터의 원인이 상자 밖으로 gzip으로 압축 된 파일을 지원)
당신은 gziped 파일을 다운로드하고 "일반 파일"로 저장하기 위해 다음과 같은 방법을 사용할 수 있습니다 :
function download_content_gzip($url, $out){
//fetch compressed file
$tmp = file_get_contents($url);
file_put_contents("tmp.gzip", $tmp);
$buffer_size = 4096; // read 4kb at a time
// Open files (in binary mode)
$file = gzopen("tmp.gzip", 'rb');
$out_file = fopen($out, 'wb');
while(!gzeof($file)) {
fwrite($out_file, gzread($file, $buffer_size));
}
// close
fclose($out_file);
gzclose($file);
}
이 임시-파일 이름을 방지하기 위해 최적화 할 수 있지만 그
사용 :-) 숙제입니다 :
download_content_gzip("http://d36xtkk24g8jdx.cloudfront.net/bluebar/e2609e5/images/ico/favicon.ico", "instagram.ico");
마지막으로 당신의 "instagram.ic o "는 유효한 파일입니다.
참고 : gzopen()
은 압축되지 않은 파일도 읽을 수 있습니다. 따라서 여러 소스가 있고 실제 내용 (Type)을 확인하고 싶지 않은 경우이 방법이 두 경우 모두에 적용됩니다.
은 PHP> 5.4 그것은 몇 줄에 쓸 수 있습니다 : 오래된 PHP 버전> 4.0
$content = file_get_contents_gzip("http://d36xtkk24g8jdx.cloudfront.net/bluebar/e2609e5/images/ico/favicon.ico");
file_put_contents("result.ico", $content);
function file_get_contents_gzip($url){
return gzdecode(file_get_contents($url));
}
.1 there 이어야합니다 gcuncompress() 문자열에 대해 -하지만 실패한 것 같습니다.
이 작은 해결 방법은 지금까지 일 :
$content = file_get_contents_gzip("http://d36xtkk24g8jdx.cloudfront.net/bluebar/e2609e5/images/ico/favicon.ico");
file_put_contents("result.ico", $content);
function file_get_contents_gzip($url){
return gzdecode(file_get_contents($url));
}
function gzdecode($string) { // no support for 2nd argument
return file_get_contents('compress.zlib://data:who/cares;base64,'. base64_encode($string));
}
어떤 브라우저가 가져 오는 있습니다 v.s. 사이의 비교를 수행 어떤 PHP가 가져 오는거야? 모든 바이트 차이점은 무엇입니까? 다른 내용? 두 인스턴스에서 URL이 같다고해서 서버가 두 콘텐츠에 동일한 콘텐츠를 전송한다는 것을 의미하지는 않습니다. –
5.4K 및 4.3K 그래서 그것은 다른 데이터로 나타납니다 ...이 방법은 다른 도메인에서 처음 90 번 작동했으며 이것은이 문제가있는 첫 번째 도메인입니다. –
귀하의 브라우저가 .bmp와 같은 다른 것으로 자동 저장하지 않는지 확인하십시오. IE는 자동으로 당신이 생각보다 똑똑하다고 생각하기 때문에 데이터를 자동으로 삭제하는 것으로 유명합니다. –