0

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 経由でファイルを送信する方法に問題があると推測しています。

誰が何が間違っている可能性があるか知っていますか?

ありがとうございました。

4

2 に答える 2

1

奇妙なことに、私もこの問題にぶつかりました。何が問題なのかを 1 ~ 2 時間試してみたところ、非常に単純であり、API ドキュメント内の 1 つのステートメントを無視したことが原因であることが判明しました。「POST メソッドが使用されている場合、GET パラメータは無視されます。メソッドで、POST 経由ですべてのパラメーターを送信します。」アップロードを機能させるには、sub=upload も GET ではなく POST パラメーターとして送信する必要があります。

于 2012-07-30T13:26:53.060 に答える
0

curl パラメータを追加

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

$filename にはフル パスを記述する必要があります。申し訳ありませんが、英語はほとんどありません。

于 2012-07-08T16:29:31.457 に答える