PHP:如何使用cURL转发$ _FILES

时间:2010-06-08 01:00:32

标签: php http post curl

我正在尝试使用cURL从我正在开发的Web应用程序中的表单转发http请求。基本上我需要在不同的服务器上提交两次相同的表单,对于第二个服务器,我正在为帖子数据添加一些安全措施。

我可以在第二张表格上收到$ _POST信息完全正常,但是我的$ _FILES遇到了重大麻烦 - 我已经尝试将两者分开,所以对帖子和文件数据有单独的请求,但仍然没有运气。

这可能吗?

2 个答案:

答案 0 :(得分:2)

<?php
$filename = '/foo/bar';
$postargs = array(
   'foo' =>'bar', //normal postfield
   'fileentry' => '@'.$filename //be sure to give it as an absolute path!, $_FILES['fileentry']['tmp_name'] usually has this
 );

$ch = curl_init();
//other stuff with curl
curl_setopt($ch,CURL_POSTFIELDS, $postargs);//give as array for proper encoding.
curl_exec();
?>

答案 1 :(得分:0)

你可以:

  • 强制PHP不处理文件(详见this question);
  • 使用curl将file_get_contents('php://input')作为原始发布数据提交(有关详细信息,请参阅this question)。您还必须使用CURLOPT_HTTPHEADER转发一些HTTP标头,即Content-LengthContent-type

这可以避免命中文件系统。