undone
undone

Reputation: 7888

Transfer files between servers using php

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

Upvotes: 3

Views: 2432

Answers (2)

barbushin
barbushin

Reputation: 5305

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);
}

Upvotes: 4

lock
lock

Reputation: 6614

You can define a limit of how much bytes the curl operation will read using:

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

however I don't think using curl to download a file is appropriate. Use file instead.

Upvotes: 0

Related Questions