【发布时间】:2010-07-15 15:57:53
【问题描述】:
我有这样的表格:
<form method="POST" action="i.php" enctype="multipart/form-data">
<input type="text" name="field1">
<input type="text" name="field2">
<input type="file" name="file">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="submit">
</form>
在我已有的页面上:
$URL = 'http://somewhere.com/catch.php';
$fields = array('field1'=>urlencode($_POST['field1'), 'field2'=>urlencode($_POST['field2'));
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; };
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result = curl_exec($ch);
curl_close($ch);
这适用于发布 field1 和 2 字段。 是否可以以某种方式将该文件包含在该 curl 过程中?我该怎么做?我假设我必须做的不仅仅是对文件值进行编码。
所以根据 SimpleCoders 的回答,我更新了以下内容:
$URL = 'http://somewhere.com/catch.php';
$fields = array('field1'=>urlencode($_POST['field1'), 'field2'=>urlencode($_POST['field2'), 'files'=>'@'. $_FILES['file']['tmp_name']);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; };
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result = curl_exec($ch);
curl_close($ch);
它发布了 OK,但是我在 catch.php 上生成的 $_FILES 数组是空的。根据http://www.php.net/manual/en/function.curl-setopt.php 上的示例 #2,这应该可以工作。
我在两个不同的域上执行此操作...这可能是个问题吗?
【问题讨论】: