使用文件进行CURL POST - 无法在Windows

时间:2015-07-27 08:13:05

标签: php windows curl file-upload mamp

我有一个php脚本,通过cURL将文件发送到远程位置。

这在Mac上运行良好。

在带有MAMP的Windows上(目前我对此感到困惑),没有请求到达远程服务器。

如果我拿走了CURLOPT_POSTFIELDS参数,则会发送请求,但是没有我的数据(显然)。这告诉我cURL已加载正常,并且能够发送请求。

我可以解决的问题是,当包含CURLOPT_POSTFIELDS时(根据下面的代码),这会导致此操作无效 - 没有错误(我知道)。

以下是我正在运行的代码:

function getCurlValue($filename, $contentType, $postname)
{
    if (function_exists('curl_file_create')) {
        return curl_file_create($filename, $contentType, $postname);
    }

    // Use the old style if using an older version of PHP
    $value = "@{$this->filename};filename=" . $postname;
    if ($contentType) {
        $value .= ';type=' . $contentType;
    }

    return $value;
}

$filename = 'c:\path\to\file\test.txt';
$cfile = getCurlValue($filename,'text/plain','test.txt');

$data = array('updateFile' => $cfile);

$ch = curl_init();
$options = array(CURLOPT_URL => 'http://url/to/my/service',
             CURLOPT_RETURNTRANSFER => true,
             CURLINFO_HEADER_OUT => true, //Request header
             CURLOPT_HEADER => true, //Return header
             CURLOPT_FAILONERROR => true,
             CURLOPT_FOLLOWLOCATION => true,
             CURLOPT_SSL_VERIFYPEER => false,
             CURLOPT_POST => true,
             CURLOPT_POSTFIELDS => $data
            );

curl_setopt_array($ch, $options);
$result = curl_exec($ch);
$header_info = curl_getinfo($ch,CURLINFO_HEADER_OUT);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($result, 0, $header_size);
$body = substr($result, $header_size);
curl_close($ch);

我检查过cURL错误,其中没有任何错误。

任何想法都会受到最高的赞赏。

谢谢,

1 个答案:

答案 0 :(得分:0)

This issue appears to have resolved itself. All is now working, with no changes on my part.

Must have been something at the server end....