如何通过CURL以PHP格式发送文件? @filename赢了

时间:2014-10-29 17:09:27

标签: php curl

我尝试使用PHP的CURL方法通过POST发送图像。 我将图片发送到API,该API需要POST字段' photo_file'成为一个形象。 我设置了' photo_file'到@后跟文件名。 但是,当我发出请求时,API会收到文字字符串' @ filename'而不是文件内容。

以下是相关代码:

致电代码:

$data = array(
  'campaign_id' => $_POST['campaign_id'],
);
$img_source = realpath($img_source); // "/Users/andrew/Sites/roo/9699d27bb09fda3133701ca9af084e3d.jpg"
$response = $y->upload_photo($img_source, $data);

$ Y-> upload_photo()

public function upload_photo($img_source, $data) {
    $fields = array(
        'campaign_id' => $data['campaign_id'],
        'photo_file' => '@' . $img_source
    );

    return $this->request('photos', $fields, 'post');
}

$ this-> request()(相关部分):

public function request($function, $fields = array(), $method = 'get') {
    $ch = curl_init();
    $url = $this->host . $function;

    $curlConfig = array(
        CURLOPT_URL                         => $url,
        CURLOPT_RETURNTRANSFER  => 1,
        CURLOPT_HTTPHEADER          => array('Accept: application/json', 'Expect:'),
        CURLOPT_VERBOSE                 => 1,
        CURLOPT_HEADER                  => 1,
    );
    if ($method == 'post') {
        $curlConfig[CURLOPT_POST]               = 1;
        $curlConfig[CURLOPT_POSTFIELDS] = true;
        $curlConfig[CURLOPT_POSTFIELDS] = $fields;
    }

    curl_setopt_array($ch, $curlConfig);
    $result = curl_exec($ch);
    list($header_blob, $body) = explode("\r\n\r\n", $result, 3);

    $this->http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    return json_decode($body);
}

API返回一个错误,当它的开发人员查看日志时,他看到他的请求是:

'campaign_id' => '4'
'photo_file' => '@/Users/andrew/Sites/roo/9699d27bb09fda3133701ca9af084e3d.jpg'

所以将@添加到文件的开头并没有实际发送文件的内容,就像我理解的那样。此外,API可以与其他使用它的平台一起使用,所以问题肯定在我的最后。

0 个答案:

没有答案