php 模拟post 上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 模拟post 上传相关的知识,希望对你有一定的参考价值。
<form enctype="multipart/form-data" method="post" action="http://upload.lalalala.com/">
<input name="Token" value="<?php echo $Token ;?>" type="hidden">
<input type="file" name="file">
<input type="submit">
</form>
像这样的表单,怎样模拟呢?求指条路....
//curl实现post请求
public function curl_post($url, $data = null)
//创建一个新cURL资源
$curl = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
//设置URL和相应的选项
curl_setopt($curl, CURLOPT_URL, $url);
if (!empty($data))
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行curl,抓取URL并把它传递给浏览器
$output = curl_exec($curl);
//关闭cURL资源,并且释放系统资源
curl_close($curl);
return $output;
参考技术A
用php curl可模拟,主要是加了@符号。
$file = 'file'; //要上传的文件$url = 'url';//target url
$fields['f'] = '@'.$file;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );
curl_exec( $ch );
if ($error = curl_error($ch) )
die($error);
curl_close($ch); 参考技术B POST 提交 用 CURL 是正解
PHP 模拟POST请求
/** * 模拟post进行url请求 * @param string $url * @param array $post */ function request_post($url, $post = array()) { if (empty($url) || empty($post)) { return false; } $post_data = http_build_query($post); $ch = curl_init();//初始化curl curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页 curl_setopt($ch, CURLOPT_HEADER, 0);//设置header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $data = curl_exec($ch); //运行curl curl_close($ch); return $data; }
以上是关于php 模拟post 上传的主要内容,如果未能解决你的问题,请参考以下文章