PHP 利用 cURL 发送文件

本文详细介绍了在不同PHP版本中使用CURL进行文件上传的方法。针对PHP 5.5及以下版本,展示了如何利用@符号指定本地文件路径进行上传;对于PHP 5.5以上版本,则介绍通过CURLFILE对象实现文件封装与上传的过程。同时,文章提供了完整的代码示例,并附有相关文档链接供读者深入学习。
摘要由CSDN通过智能技术生成

目录

需求背景

curl封装函数

php <= 5.5 发送文件写法

 php>5.5  / 7 发送文件方式

 参考文档


 

需求背景

公司技术架构整理,java做服务端,php做业务端.所有涉及到的非业务端接口均由java提供网关接口.

于是资源管理部分的oss 就需要用php来调用java接口.

curl封装函数

这是正常封装的post函数.php版本从5.5-7.2 版本更替时修改过一次

<?php

    /**
     * HTTP POST请求
     * @param  string  $url 请求的URL
     * @param  array  $data 请求的数据
     * @throw  UserException
     * @return string|throw
     */
    function post($url,$data, $headers = [])
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");//3.请求方式
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if(is_array($headers) && count($headers) > 0){
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        }
        $response = curl_exec($curl);
        $status   = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        curl_close($curl);
        if(!$response){
            throw new UserException("请求失败,未知错误!", $status);
        }
        if ($status == 200) {
            return $response;
        } else {
            throw new UserException("请求失败,内容:" . $response, $status);
        }
    }
?>

php <= 5.5 发送文件写法

PHP5.5 以前的发送文件的写法跟 5.5之后的写法有部分出入

 

<?php
$url = "http://www.xxxx.com/upload";// 示例接口请求地址
$data = array(
    "upload" => "@/mnt/d/home/www/business-platform/uploads/2020/01/04/timg.jpg"
);
$return = post($url,$data);// 该封装函数在 ↑↑↑↑↑↑↑↑ 上面
print_r($return);

 php>5.5  / 7 发送文件方式

php5.5之后就弃用了 @ 定位资源. 改用CURLFILE 对象 , 来封装资源

具体用法文尾付语法链接

<?php
$url = "http://www.xxxx.com/upload";// 示例接口请求地址
$localPath= "/mnt/d/home/www/business-platform/uploads/2020/01/04/timg.jpg";

$params = [
    'file'=>new \CURLFILE($localPath),
];
$return = post($url,$params);// 该封装函数在 ↑↑↑↑↑↑↑↑ 上面
print_r($return);

 参考文档

  1. CURLFILE 文档参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值