Cześć!
Jestem w posiadaniu takiego skryptu:
<?php
$login = "";
$haslo = "";
function get_number($url)
{
$regex = '|/file/(([a-z][0-9]+/)?[0-9]+)(/.*)?$|';
preg_match($regex, $url, $matches);
return $matches[1];
}
if($_POST['pokaz'])
{
$link = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'].'?link='.$_POST['pokaz'];
echo ("<center><b>Twój link do pobrania: <a href=\"$link\">$link</a></b></center><br>");
}
$link = addslashes($_GET['link']);
if($link)
{
$url = 'http://api.filesonic.com/link?method=getDownloadLink&u='.$login.'&p='.$haslo.'&ids='.get_number($link);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$zrodlo = curl_exec($ch);
curl_close($ch);
$ss = explode('"filename":"', $zrodlo);
$ss1 = explode('"', $ss[1]);
$nazwa = trim($ss1[0]);
$ss2 = explode('"url":"', $zrodlo);
$ss3 = explode('"', $ss2[1]);
$download = trim($ss3[0]);
$download = str_replace('\\', '', $download);
$remoteFile = $download;
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
echo 'Plik wygasł!';
exit;
}
$contentLength = 'unknown';
$status = 'unknown';
if (preg_match('/^HTTP\/1\.[01] (\d\d\d)/', $data, $matches)) {
$status = (int)$matches[1];
}
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
$waga = (int)$matches[1];
}
if (preg_match('/filename="(.*)"/', $data, $wynik)){
$nazwa = trim($wynik[1]);
}
header("Content-type: application/force-download");
header('Content-Disposition: attachment; filename="'.$nazwa.'"');
header('Content-Length: '.$waga);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $download);
curl_exec($ch);
curl_close($ch);
}
?>
Służy on do pobierania plików z np. Filesonic.com za pośrednictwem serwera.
Niestety występuje problem. Otóż serwer podczas pobierania pliku, w pewnym momencie zrywa połączenie i trzeba pobierać od nowa.
Myślę, że problem leży w konfiguracji serwera. Chciałbym ustawić go tak, żeby podczas pobierania pliku możliwe było nawiązanie kilku jednoczesnych połączeń i wznawianie połączenia w razie jego zerwania. Proszę Was o wskazówki!