Warning: Error while sending QUERY packet. PID=4752 in /home/wwwroot/coco/domain/cnlamp/web/wp-includes/wp-db.php on line 1877 php 模拟post上传文件 | LAMP新闻|技巧|经验|资讯站
现在的位置: 首页PHP>正文
php 模拟post上传文件
发表于5年前 PHP 暂无评论

php模拟post提交文件,跟模拟普通的post基本类似,常用的有两种方式,sock与curl,但是用sock方法连接模拟POST提交,虽然获取了post传送过来的二进制数据,但是与原文件的md5值不相同,并且文件也打不开,因此,对于模拟post上传文件,只能用curl方式,用curl方式也有两种方式:

第一种:接受二进制流。

<?php
    $stream = file_get_contents('test.jpg');
    $len = strlen($stream);
 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1/test1.php");
    curl_setopt($ch, CURLOPT_POST, 1);//启用POST提交
    curl_setopt($ch, CURLOPT_PORT, 80); //设置端口
    curl_setopt($ch,CURLOPT_POSTFIELDS,$stream);
    curl_exec($ch);
    curl_close($ch);
?>

第二种:模拟表单提交

<?php
$data = array(
 "file2"  =&gt; "@".realpath("test.jpg")  //文件路径前面加@
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1/test1.php");
curl_setopt($ch, CURLOPT_POST, 1);//启用POST提交
curl_setopt($ch, CURLOPT_PORT, 80); //设置端口
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_exec($ch);
curl_close($ch);
?>

接受文件test1.php

<?php
    $str = file_get_contents("php://input");
    file_put_contents("test2.jpg",$str);
?>

给我留言

留言无头像?


×
腾讯微博