我使用PHP (WAMPServer)接收表单提交,然后CURL将文件传递到另一个服务器进行处理。
下面是一个示例(不是实际的代码):
$data = array(
'file' => '@'.$_FILES['key']['tmp_name']
);
这是我用来卷曲的.当我粘贴代码时,我注意到我的代码中仍然有http_build_query()
...所以,这一定是问题所在。
$CURL = curl_init();
curl_setopt($CURL, CURLOPT_URL, $operation['callback']);
$query_string = http_build_query($arguments);
curl_setopt($CURL, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($CURL, CURLOPT_POST, TRUE);
curl_setopt($CURL, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($CURL);
curl_close($CURL);
return $result;
我的问题是最后一台服务器没有接收到文件。相反,数据以键-值对的形式传递。
$_POST contains 'file' => '@c:\wamp\tmp\xyz.tmp'
我更喜欢的是,文件被传输了,而$_FILES有关于它的信息。
发布于 2012-04-12 00:19:39
不要为CURLOPT_POSTFIELDS构建http查询。Curl可以直接接受字段数组,并进行自己的编码/整理。
通过构建自己的查询,您可以“隐藏”指示文件上传的@
,并且CURL不会触发其上传机制。
换句话说,这将解决问题:
$data = array(
'file' => '@'.$_FILES['key']['tmp_name']
);
curl_setopt($CURL, CURLOPT_POSTFIELDS, $data);
发布于 2012-04-11 23:44:50
如果您添加您的CURL
方法代码,我们可以更好地回答您...
尝试以二进制格式传输文件,并在curl的头文件中添加文件大小。
https://stackoverflow.com/questions/10108926
复制相似问题