使用PHP和cURL通过API将文件上传到RapidShare

时间:2012-06-11 21:17:16

标签: api file-upload rapidshare

我正在尝试使用API​​和PHP和cURL将文件上传到RapidShare。到目前为止,我已经有了这段代码:

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

但我得到的唯一回应是:ERROR: Subroutine invalid. (b6ba5d82)。如果我这样做(基本上不发送带有请求的文件):

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

我收到此回复:ERROR: No files transmitted. (f269d341)

所以我猜测我通过POST发送文件的方式有问题。

任何人都知道可能出现什么问题?

谢谢。

2 个答案:

答案 0 :(得分:1)

奇怪的是,我也遇到了这个问题。在尝试了一两个小时以找出错误之后,结果很简单并且忽略了api文档中的单个语句:“如果使用POST方法,则忽略GET参数。所以如果你使用POST方法,通过POST发送所有参数。“为了上传工作,sub = upload也应该作为POST参数而不是GET发送。

答案 1 :(得分:0)

添加curl参数

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

和$ filename必须写完整路径。 对不起,我很少英语。