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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PHP和cURL通过它们的API将文件上传到RapidShare相关的知识,希望对你有一定的参考价值。

我正在尝试使用带有cURL的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发送文件的方式出了问题。

有人知道怎么了吗?

谢谢。

答案

奇怪的是,我也遇到了这个问题。 经过一两个小时的尝试后,发现问题很简单,这是由于忽略了api文档中的一条语句引起的:“如果使用POST方法,则忽略GET参数。因此,如果使用POST方法,通过POST发送所有参数。” 为了进行上传,sub = upload也应作为POST参数而不是GET发送。

另一答案

添加curl参数

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

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

以上是关于使用PHP和cURL通过它们的API将文件上传到RapidShare的主要内容,如果未能解决你的问题,请参考以下文章

在邮递员中使用 php curl 将文件上传到 Nextcloud 但上传的文件为空

如何使用 PHP 和 CURL 使用 api 在 github 上上传 zip

如何通过 PHP 使用 curl 上传文件 [关闭]

通过 API 将文件上传到 NextCloud 时出错

在 R 中上传超过 2.15 GB 的文件

如何将 curl 上传进度发送到要显示的 ajax