通过他们的API使用PHP和卷曲文件上传到RapidShare的(Uploading files t

2019-10-31 18:34发布

我试图上传使用他们的API和PHP和卷曲的文件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) 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) ERROR: No files transmitted. (f269d341)

所以我猜有什么毛病我通过POST发送文件的方式。

任何人都知道什么地方出错了?

谢谢。

Answer 1:

添加卷曲参数

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

和$文件名必须写出完整路径。 对不起林英很少。



Answer 2:

奇怪的是,我正好碰到这个问题为好。 尝试了一两个小时,以找出什么是错后,它被证明是非常简单,通过忽略API文档中的单个语句引起的:“如果使用POST方法的GET参数被忽略,因此,如果您使用POST。方法,通过POST发送所有参数“。 上传工作,分=上传也应作为发送一个POST参数,而不是GET。



文章来源: Uploading files to RapidShare using PHP and cURL via their API