проблема с завитками $ _POST и $ _FILES в одном запросе - PullRequest
1 голос
/ 08 июля 2010

Я пытаюсь воссоздать весь 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 Ответ

1 голос
/ 24 июня 2011

Проблема в том, что в вашем $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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...