Search code examples
apifile-uploadrapidshare

Uploading files to RapidShare using PHP and cURL via their API


I'm trying to upload files to RapidShare using their API and PHP with cURL. So far, I've got this code:

// Get the RapidShare server to upload to
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=nextuploadserver');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$uploadServer = curl_exec($ch);

// Upload the file to RapidShare
$url = 'http://rs' . $uploadServer . '.rapidshare.com/cgi-bin/rsapi.cgi?sub=upload';
$url .= '&login=login';
$url .= '&password=mypass';
$url .= '&filename=' . $filename;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
// Set post fields
$postFields = array('filecontent' => array('@' . $targetDir . '/' . $id));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
$resp = curl_exec($ch);

die($resp);

But the only response I get is: ERROR: Subroutine invalid. (b6ba5d82). If I just do this (basically don't send the file with the request):

// Upload the file to RapidShare
$url = 'http://rs' . $uploadServer . '.rapidshare.com/cgi-bin/rsapi.cgi?sub=upload';
$url .= '&login=login';
$url .= '&password=mypass';
$url .= '&filename=' . $filename;
curl_setopt($ch, CURLOPT_URL, $url);
$resp = curl_exec($ch);

I get this response: ERROR: No files transmitted. (f269d341)

So I'm guessing there's something wrong with the way I'm sending the file via POST.

Anyone know what could be wrong?

Thank you.


Solution

  • Add curl parameter

        curl_setopt($ch, CURLOPT_INFILESIZE,(string)filesize($filename));
        curl_setopt($ch, CURLOPT_INFILE,fopen($filename,'r'));
    

    and $filename must write full path. Sorry Im english very little.