卷曲管道$ _POST和$ _FILES在同一请求中的问题

时间:2010-07-08 17:01:54

标签: php http curl

我正在尝试重新创建包含帖子和文件数据的整个http请求,但无论我做什么,我似乎无法让我的文件工作,我正在使用的代码如下...

$count=count($_FILES['photographs']['tmp_name']);

$file_posts=array();

for($i=0;$i<$count;$i++) {
    if(!empty($_FILES['photographs']['name'][$i])) {    
 $_FILES['photographs']['tmp_name'][$i] = "@".$_FILES['photographs']['tmp_name'][$i];
    }
}

$post = array_merge($_POST, $_FILES);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://url/to/file.php");      
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch,CURLOPT_HEADER,TRUE);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_exec($ch);
curl_close($ch);

我尝试了很多这方面的变种,但无论如何我似乎无法让文件工作,但是其他的帖子数据也不错。

1 个答案:

答案 0 :(得分:1)

问题是$post中有第二个“数组”数组。

你需要这样做:

$file_posts=array();

for($i=0;$i<$count;$i++) {
    if(!empty($_FILES['photographs']['name'][$i])) {    
       $file_posts['photographs'][$i] = "@".$_FILES['photographs']['tmp_name'][$i];
    }
}