将带有列表文件的数组传递给 curl 循环

Posted

技术标签:

【中文标题】将带有列表文件的数组传递给 curl 循环【英文标题】:pass array with list file to curl loop 【发布时间】:2012-11-06 14:04:37 【问题描述】:

我怀疑我是否可以将包含文件链接的数组传递给 curl 循环以创建单个循环,而不是每次我需要上传文件内容时,复制并粘贴相同的 curl 调用不同的文件名。

这是我为将单个文件上传到服务器而编写的代码。我为每个文件复制并粘贴相同的代码,这样一切正常,但我想了解如何创建一个循环给“$data = array('file'=>$fn);”包含所有文件内容的循环,并在调用函数“file_get_contents($fn)”时自动执行一个函数中的所有调用。

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

谢谢!

编辑:嗨,我再次有疑问。如果我想将该脚本用作函数来将其方法调用到另一个脚本中,该脚本将逐篇阅读文章,这里我必须将 function updateContent() 以将方法updateContent() 调用到另一个脚本中? 正如我已经说过的, $fn 包含一个包含文件列表的数组。如果我想调用创建的updateContent() 但仅针对特定的file1.rdf 是正确的,使用该命令updateContent($files['0']); 调用仅为元素0(对应于提到的数组的file1.rdf)指定的方法进行更新它的状态?

【问题讨论】:

【参考方案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 />";
    

【讨论】:

太棒了!正是我需要理解我的错误。非常感谢

以上是关于将带有列表文件的数组传递给 curl 循环的主要内容,如果未能解决你的问题,请参考以下文章

使用for循环从数组迭代到列表

Swift 3 将 ArrayList 对象变量传递给字符串数组

使用CURL上传文件

将 json 传递给包含 json 数组的服务器

循环遍历 JSON 数组

将对象列表传递给 Freemarker 然后循环