当前位置:首页 » 编程语言 » curlpost文件php

curlpost文件php

发布时间: 2023-05-13 17:25:02

‘壹’ php curl post 上传文件 接收文件 $_FILES 为空 是服务器配置问题吗还是什么原因

原因找到了。就是$data['img']="@/tmp/1.jpg";这句话

一定要用绝对路径。

$ch=curl_init();

define('_ROOT',str_replace("\",'/',dirname(__FILE__)));
$data['img']="@"._ROOT."/tmp/1.jpg";
curl_setopt($ch,CURLOPT_URL,"http://www.biubiu.com/huahua.php");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result=curl_exec($ch);
curl_close($ch);
echo$result;

‘贰’ PHP相关:用CURL POST文件后,接收页面只有$_POST数据,$_FILES为空

'file' => @'E:/WEB/PHP/tools/grab/qie.jpg'改为
'file' =>'@E:/WEB/PHP/tools/grab/qie.jpg' 试试

‘叁’ php,用curl写个post登陆并取回cookies的代码

要在文件中保存COOKIE的信息,你的curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file);中的$cookie_file必须是要保存cookie信息的文件名,最最关键的一点,这个文件名是必须要带绝对路径,否则是不行的,如果文件带上绝对路径的话,会在文件中以Netscape格式保存所有的cookie信息。
还有一个需要说明的,COOKIE必须指定有效期,如果没有指定有效期的话,默认的浏览器关闭COOKIE就失效。这种COOKIE信息在内存中存放,不会写入硬盘的。
这两个方面你都需要考虑。用绝对路径,保存一个长效的COOKIE,肯定可以成功!

‘肆’ php使用curl的post方法字符串和数组传值的区别

在PHP手册的curl_setopt函数中,关于CURLOPT_POSTFIELDS有如下描述:
全部数据使用HTTP协议中的"POST"操作来发送。
要发送文件,在文件名前面加上@前缀并使用完整路径。(5.5+建议用CURLFile)
这个参数可以通过urlencoded后的字符串类似'para1=val1&para2=val2&...'
或使用一个以字段名为键值,字段数据为值的数组。
如果value是一个数组,Content-Type头将会被设置成multipart/form-data。

因此,这两种传值方式是有所区别的。

当然,可以通过CURLOPT_HTTPHEADER指定Content-Type。

更多PHPcURL内容,请参考我的博客《PHPcURL实现模拟登录与采集使用方法详解教程》

‘伍’ php Curl的get和post方法

get方法

function http_get($url)

{

    $oCurl = curl_init();

    if (stripos($url, "https://") !== FALSE) {

        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);

        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);

        //curl_setopt($oCurl, CURLOPT_SSLVERSION, 1);

        //CURL_SSLVERSION_TLSv1

    }

    curl_setopt($oCurl, CURLOPT_URL, $url);

    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);

    $sContent = curl_exec($oCurl);

    $aStatus = curl_getinfo($oCurl);

    curl_close($oCurl);

    if (intval($aStatus["http_code"]) == 200) {

        return $sContent;

    } else {

        return false;

    }

}

post方法

    // curlpost请求

    function http_post($url, $data = NULL, $json = false)

    {

        $curl = curl_init();

        curl_setopt($curl, CURLOPT_URL, $url);

        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

        if (!empty($data)) {

            if ($json && is_array($data)) {

                $data = json_encode($data);

            }

            curl_setopt($curl, CURLOPT_POST, 1);

            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

            if ($json) { //发送JSON数据

                curl_setopt($curl, CURLOPT_HEADER, 0);

                curl_setopt(

                    $curl,

                    CURLOPT_HTTPHEADER,

                    array(

                        'Content-Type: application/json; charset=utf-8',

                        'Content-Length:' . strlen($data)

                    )

                );

            }

        }

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        $res = curl_exec($curl);

        $errorno = curl_errno($curl);

        if ($errorno) {

            return array('errorno' => false, 'errmsg' => $errorno);

        }

        curl_close($curl);

        return json_decode($res, true);

    }

‘陆’ 修改php代码使用curl实现POST

POST提交是要浏览器提交客户端才能有效果,服务器上使用CURL提交后,浏览器使用者看不见任何效果的。

对于现在的架构,我认为应该PHP输出js代码POST提交,例如:

header("location:$fileurl");

语句修改为:

echo<<<END
<formname=form1method=postaction=play.php>
<inputtype=hiddenname=fileurlvalue='$fileurl'>
</form>
<javascriptlanguage=javascript>
form1.submit();
</javascript>
END;
热点内容
c语言保存txt文件 发布:2025-07-18 07:01:27 浏览:172
android线程访问网络 发布:2025-07-18 06:57:15 浏览:893
怎么创建boa服务器 发布:2025-07-18 06:52:09 浏览:696
大盘指标源码 发布:2025-07-18 06:51:33 浏览:923
python粘贴板 发布:2025-07-18 06:46:20 浏览:795
pro241会有什么配置 发布:2025-07-18 06:46:15 浏览:647
android下载实例 发布:2025-07-18 06:43:00 浏览:445
java完全数 发布:2025-07-18 06:40:46 浏览:275
微信投诉怎么上传图片 发布:2025-07-18 06:40:38 浏览:786
电脑版我的世界自救练习服务器 发布:2025-07-18 06:22:25 浏览:263