많은 사이트를 RapidShare에 업로드하여 저장합니다. 그런 다음 파일을 다운로드하려는 사용자가 액세스 할 때 API를 사용하여 RapidShare에서 다운로드 한 후 사용자에게 제공하는 스크립트가 있습니다. 이 파일을 담당하는 스크립트의 관련 코드는 다음과 같습니다.RapidShare에서 다운로드 할 때 손상된 이미지
// Stream file to user
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename=' . $result->name);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Content-Length: ' . $result->size);
$url = 'https://' . $host . '/cgi-bin/rsapi.cgi?sub=download';
$url .= '&login=login';
$url .= '&password=mypass';
$url .= '&fileid=' . $result->rs_fileid;
$url .= '&filename=' . $result->name;
$handle = fopen($url, 'rb');
if(!$handle) {
throw new Exception('Failed to open file handle');
}
while(!feof($handle)) {
echo fread($handle, 1024*1024);
ob_flush();
flush();
}
fclose($handle);
이미지를 제외하고 테스트 한 모든 파일에 대해 정상적으로 작동합니다. 이미지가 다운로드되면 손상됩니다. Windows Photo Viewer는 이미지를 열 수 없으며 Photoshop과 같은 프로그램도 이미지를 열 수 없습니다.
이상한 것은, .exe를 다운로드하고 실행하면 모든 것이 정상적으로 작동한다는 것입니다. 그것은 부패한 것이 아닙니다. 내가 말할 수있는 한 이미지로만 발생합니다. 또한 .pdf로 테스트했습니다. 나는 원본 이미지 (2882 바이트)의 파일 크기를 보면
, 그것은 괴상하게하려면 다음이 스크립트를 통해 다운로드 한 이미지의 파일 크기, 그들은 같은거야. 파일 크기는 2,882 바이트입니다. 그러나 이미지는 여전히 손상되었습니다.이 문제의 원인이 될 수있는 것은 무엇입니까? 다운로드 할 때 이진 데이터를 파일에 추가하는 것과는 다릅니다. :/
감사합니다.
편집 : 나는 이미지가 괜찮 및 손상되지 스크립트를 거치지 않고에 Rapidshare에서 바로 파일을 다운로드하는 경우, 언급하는 것을 잊었다. 따라서 여기는 잘못이있는 스크립트 여야합니다.
파일의 md5sum은 어떻게 비교됩니까? 원래와 맹 글링 된 것을 보여줄 수 있습니까? – OmnipotentEntity