Только что попытался воспроизвести ситуацию. Губмо прав, у меня этот метод загрузки работает с Content-Type: application / octet-stream и Content-type: application / force-download заголовками
Как объяснено здесь , HTTP 410 означает, что запрашиваемый клиентом URL больше не доступен из этой системы. Это не ответ «никогда не слышал об этом», но ответ «здесь больше не живет» . Может быть, у них какая-то система против выщелачивания.
Это должно быть расследовано. Если им нужны куки - stream-context-create может помочь. Или, может быть, они проверяют реферера. Но я почти уверен, что проблема не в заголовках.
Надеюсь, это поможет.
UPD Пример кода, о котором вы спрашивали.
// file to download -- application/octet-stream
$remoteFile = 'http://dev/test/remote/send.php';
// file to download -- application/force-download
$remoteFile = 'http://chtyvo.org.ua/authors/Skriabin_Kuzma/Ya_Pobieda_i_Berlin.rtf.zip';
// file to store
$localFile = 'kuzma.zip';
$fin = fopen($remoteFile, "r");
if (!$fin) {
die("Unable to open remote file");
}
$fout = fopen($localFile, "w");
if (!$fout) {
die("Unable to open local file");
}
while (!feof($fin)) {
$line = fgets($fin, 1024);
fwrite($fout, $line, 1024);
}
fclose($fout);
fclose($fin);
То же, что и у вас.