PHP POST CURL上传图片

<pre name="code" class="php">function _curl_multipart_post($url, $post_data, $file_fields = array(), $timeout=30)
    {
        $result = array('errno' => 0, 'errmsg' => '', 'result' => '');

        $ch = curl_init();
		//set various curl options first

		// set url to post to
		curl_setopt($ch, CURLOPT_URL, $url);
		
		// return into a variable rather than displaying it
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		
		//set curl function timeout to $timeout
		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_VERBOSE, false);

		//set method to post
		curl_setopt($ch, CURLOPT_POST, true);

		// disable Expect header
		// hack to make it working
		$headers = array("Expect: ");
		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
		
		// initialize result post array
		$result_post = array();

		//generate post string
		$post_array = array();
		$post_strings = array();
		if (!is_array($post_data)) {
            $result['errno'] = 5;
            $result['errmsg'] = 'Params error.';
            return json_encode($result);
			// return false;
		}

		foreach($post_data as $key=>$value) {
			$post_array[$key] = $value;
			$post_strings[] = urlencode($key)."=".urlencode($value);
		}

		$post_string = implode("&", $post_strings);

		// set post string
        // curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);

		// set multipart form data - file array field-value pairs
		if (!empty($file_fields)) {
			foreach($file_fields as $key => $value) {
				if (strpos(PHP_OS, "WIN") !== false) {
                    $value = str_replace("/", "\\", $value); // win hack
                }
				$file_fields[$key] = "@".$value;
			}
		}

		// set post data
		$result_post = array_merge($post_array, $file_fields);
		if(class_exists("CURLFile")){//zjb 修复新版本PHP引来的Bug
			$result_post['Filedata'] = new CURLFile($result_post['filepath']);
		}
		curl_setopt($ch, CURLOPT_POSTFIELDS, $result_post);
        // print_r($result_post);

		//and finally send curl request
		$output = curl_exec($ch);
        $result['result'] = $output;
        // print_r($result);

		if (curl_errno($ch)) {
            if (0) {
				echo "Error Occured in Curl\n";
				echo "Error number: " .curl_errno($ch) ."\n";
				echo "Error message: " .curl_error($ch)."\n";
			}
            $result['errno'] = curl_errno($ch);
            $result['errmsg'] = curl_error($ch);
			// return false;
		} else {
			// return $result;
		}
        curl_close($ch);
        
        return $result;
	}



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值