0

ファイルのリンクを含む配列をcurlループに渡して単一のループを作成できるかどうか疑問があります。ファイルの内容をアップロードする必要があるたびに、同じcurl呼び出しを別のファイル名でコピーして貼り付けます。 .

これは、単一のファイルをサーバーにアップロードするために書いたコードです。すべてのファイルに同じコードをコピーして貼り付けると、すべてが機能しますが、「$data = array('file'=>$fn);」に与える単一のループを作成する方法を理解したいと思います。関数 "file_get_contents($fn)" を呼び出すときに、すべてのファイル コンテンツを含むループを実行し、1 つの関数ですべての呼び出しを自動化します。

//file to upload

$fn = ("fn.rdf");

//curl loop to upload single file
    $data = array('file'=>$fn);
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/rdf+xml'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/index.php?update=true');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($fn));  
    curl_exec($ch);
    $info = curl_getinfo($ch); var_dump($info);
    $result = curl_exec($ch); 
     if ($result === false) {
       die(curl_error());
     }else{
       echo "<br>"."upload ok"."<br>";
     }

ありがとう!

編集:こんにちは、もう一度疑問があります。そのスクリプトを関数として使用して、記事を 1 つずつ読み取る別のスクリプトにそのメソッドを呼び出す場合は、ここで function updateContent(){}メソッドを他のスクリプトに呼び出す必要がありupdateContent()ますか? 既に述べたように、$fn にはファイルのリストを含む配列が含まれています。updateContent()作成されたが特定の file1.rdf に対してのみ呼び出したい場合は、そのコマンドupdateContent($files['0']);を使用して、要素 0 (前述の配列の file1.rdf に対応) に対してのみ指定されたメソッドを呼び出して、状態を更新するのが正しいですか?

4

1 に答える 1

1

あなたはそのようなことを意味しますか?

$files = array('1.rdf', '2.rdf', '3.rdf', 'x.rdf', 'whatever.xyz');

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/rdf+xml'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/index.php?update=true');
curl_setopt($ch, CURLOPT_POST, true);

foreach ($files as $fn) {
    curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($fn));  
    $result = curl_exec($ch);
    $info = curl_getinfo($ch); 
    var_dump($info);
    if ($result === false) {
       die(curl_error());
    }else{
       echo "<br />".$fn." upload ok"."<br />";
    }
}
于 2012-11-18T13:28:03.153 に答える