Php $\u文件为空,使用文件上载进行卷曲

Php $\u文件为空,使用文件上载进行卷曲,php,wordpress,curl,Php,Wordpress,Curl,在这件事上我的头撞到了墙上。我觉得我的问题真的很傻,但我就是不知道是什么 我有一个代理脚本,它处理所有事情(发布数据和上传) 当我在后端服务器上打印\u r($\u文件)时,它是一个空数组,$\u POST包含文件路径 $ch = curl_init(); $options = array( CURLOPT_HEADER => 1, CURLOPT_HTTPHEADER => array( "Host: {$host}", "C

在这件事上我的头撞到了墙上。我觉得我的问题真的很傻,但我就是不知道是什么

我有一个代理脚本,它处理所有事情(发布数据和上传)

当我在后端服务器上打印\u r($\u文件)时,它是一个空数组,$\u POST包含文件路径

$ch = curl_init();
$options = array( 
    CURLOPT_HEADER => 1, 
    CURLOPT_HTTPHEADER => array( 
        "Host: {$host}", 
        "Cache-Control: no-cache"
    ), 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_SSL_VERIFYHOST => false, 
    CURLOPT_SSL_VERIFYPEER => 0, 
    CURLOPT_URL => "http://{$this->config->ipAddress}{$url}", 
    CURLOPT_FOLLOWLOCATION => false, 
    CURLOPT_COOKIE => $cookie_string, 
    CURLOPT_USERAGENT => $_SERVER["HTTP_USER_AGENT"]
);

if (! empty($_POST)) {
    if (! empty($_FILES)) {
        //$options[CURLOPT_HTTPHEADER][] = "Content-type: multipart/form-data";

        $files = "";
        foreach ($_FILES as $fid => $file) {
            $files .= "{$fid}=@" . $file["tmp_name"] . ";type={$file["type"]};name={$file["name"]}&";
        }
    }

    $postString = (! empty($files) ? $files : '') . http_build_query($_POST);
    $options[CURLOPT_POST] = 1;
    $options[CURLOPT_POSTFIELDS] = $postString;
}

curl_setopt_array($ch, $options);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
我之所以使用http_build_查询而不是仅仅提供一个数组,是因为我们将遇到一个多维数组


谢谢

我敢打赌您的表单enctype不是“多部分/表单数据”b/c您没有将post字符串作为数组传递

  • 搜索“CURLOPT_POSTFIELDS” 下面是该页的摘录
如果值是数组,则内容类型标题将设置为多部分/表单数据。从PHP 5.2.0开始,如果文件以@前缀传递到此选项,则值必须是数组


您可以通过设置curl选项“curl_setopt($ch,CURLOPT_VERBOSE,TRUE);”然后在“curl_exec($ch);”之后设置“print_r(curl_getinfo($ch))”来了解curl的情况,它将输出有关请求和响应的所有信息。

啊,不知道您必须为文件提供一个数组。谢谢因为我走了另一条路,因为我有一个多维数组。所以我写了一个函数来展平它。:)