2010-10-15 9 views
2
Hello 
I wrote a little code in php that enables me to download a file from one 
website to my own! 
but there is a little problem here! 
I can only Download files from my website that are less than 4MB:(
Now my question is that in what way I can Download special 
part of files from other websites! 
like from 1st byte to 10th byte! 

And second question is how to get file 
Information before starting Download! 
(I want files size for downloading) 

http://www.polarpengi.gigfa.com/code.htmПередача файлов между серверами с помощью PHP

ответ

3
function downloadFileFromUrl($url, $dstFilepath) { 
    $fr = @fopen($url, 'r'); 
    if($fr === false) { 
     throw new Primage_Proxy_Storage_SourceNotFound($url); 
    } 
    $fw = fopen($dstFilepath, 'w'); 
    if($fw === false) { 
     throw new Exception('Writing to file "' . $dstFilepath . '" failed'); 
    } 

    $timeLimit = 1000; 
    set_time_limit($timeLimit); 
    $deadline = time() + 1000; 

    while(!feof($fr)) { 
     $bufferString = fread($fr, 10000); 
     fwrite($fw, $bufferString); 
     if($deadline - time() < 10) { 
      fclose($fw); 
      fclose($fr); 
      unlink($dstFilepath); 
      throw new Primage_Proxy_Storage_SourceNotFound($url); 
     } 
    } 
    fclose($fw); 
    fclose($fr); 
} 
+0

как использовать SFTP, если файл недоступен через URL? –

0

Вы можете определить предел, сколько байтов в локон операции будет читать с помощью:

curl_setopt($ch, CURLOPT_RANGE,"1-2000"); //where 1-2000 range of downloaded bytes 

однако я не думаю, что с помощью завиток для загрузки файл подходит. Вместо этого используйте file.

+0

И почему загрузка файла через завиток была бы неуместной? Версия командной строки CURL - идеальное решение для загрузки файлов, так почему библиотека не будет? И почему функция, которая помещает файл в * массив *, лучше? – leafnode

Смежные вопросы