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>

像这样的表单,怎样模拟呢?求指条路....

你写一个方法把,在php里面可以使用curl库来模拟这样的表单 代码如下:
//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 上传的主要内容,如果未能解决你的问题,请参考以下文章

PHP里模拟Post提交是啥意思?

如何在 Python 中模拟 post 表单来上传文件

JAVA模拟HTTP post请求上传文件

5.post上传和压缩插件模拟请求

java模拟post方式提交表单实现图片上传

PHP模拟post提交数据方法汇总