Upload remote zip file using file_get_contents or cURL PHP 5.3

140 Views Asked by At

I have the url to a file on a remote server. The url is something like this: http://www.example.com/file/. As you can see, I don't have the file extension, but when I execute this url directly in a browser, a zip file is download. What I'm trying to do is not to downloaded the file, but upload it to a different location (on my machine or another server). How can I do this?

I tried getting the content of the file with file_get_contents like this:

    $opts = array(
        'http'=>array(
            'method'=>"POST",
            'header'=>array('X-Authentication: '.$_POST['access_token'], 'Content-Length: '.$_POST['file_size'])
        )
    );

    $context = stream_context_create($opts);

    $file = file_get_contents('http://www.example.com/file/', false, $context);

And then trying to send the file with cURL like this:

    $post = array('extra_info' => $_POST['file_size'],'file_contents'=>'@'.$file);

    $curl2 = curl_init();

    curl_setopt_array($curl2, array(
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_URL => 'https://localhost/manage_files/upload.php?action=do_upload',
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => $post
    ));

    curl_exec($curl2);

But when I do this I get the following error:

failed to open stream: HTTP request failed!
Error: "couldn't open file "" " - Code: 26

Any idea how to achieve this? Don't forget I'm using PHP version 5.3

Thanks in advance.

PS : upload.php is the file where I would actually perform the upload (by calling move_uploaded_file and using $_FILES, etc...)

0

There are 0 best solutions below