天天看点

php curl post 上传文件到服务器

<!--<html> 
<body> 
<form action="http://222.161.206.158:8136/ispirit/im/upload.php" method="post" enctype="multipart/form-data"> 
<input type="text"name='P' value = 1 ></input> 
<input type="text"name='MSG_CATE' value = 'file'></input>
<input type="text"name='UPLOAD_MODE' value = 1 ></input>
<input type="text" name="DEST_UID" value = 1></input> 
<input type="file" name="ATTACHMENT"></input> 
<input type="submit" ></input> 
</body> 
</html>
-->
<?php
   
    
    
    function curl_form($post_data,$sumbit_url,$http_url){
        
        //初始化
        $ch = curl_init();
        //设置变量
        curl_setopt($ch, CURLOPT_URL, $sumbit_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//执行结果是否被返回,0是返回,1是不返回
        curl_setopt($ch, CURLOPT_HEADER, 0);//参数设置,是否显示头部信息,1为显示,0为不显示
        curl_setopt($ch, CURLOPT_REFERER, $http_url); 
        //表单数据,是正规的表单设置值为非0
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 100);//设置curl执行超时时间最大是多少
        //使用数组提供post数据时,CURL组件大概是为了兼容@filename这种上传文件的写法,
        //默认把content_type设为了multipart/form-data。虽然对于大多数web服务器并
        //没有影响,但是还是有少部分服务器不兼容。本文得出的结论是,在没有需要上传文件的
        //情况下,尽量对post提交的数据进行http_build_query,然后发送出去,能实现更好的兼容性,更小的请求数据包。
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        //执行并获取结果
        $output = curl_exec($ch);
        if($outopt === FALSE)
        {
            echo "<br/>","cUrl Error:".curl_error($ch);
        }
        //    释放cURL句柄
        curl_close($ch); 
		
		echo $output;
		print_r($output);
    }
    
    
    $furl = "@d:\MYOA\aaa.doc";
              // $furl1 = "@H:/htdocs/jiyiji.php";
               $post_data = array (
                   "P"=>'1',
				    "MSG_CATE"=>'file',
					 "UPLOAD_MODE"=>'1',
					  "DEST_UID"=>'1',
                   "ATTACHMENT" => $furl
               );
    $sumbit_url = "http://222.161.206.158:8136/ispirit/im/upload.php"; 
   // $http_url="http://www.baidu.com";
    curl_form($post_data,$sumbit_url,$http_url);
?>