php使用curl通过接口上传文件

本文分享了使用PHP中curl_file_create方法上传文件时遇到的问题及解决方案。详细介绍了curl_file_create的三个参数:filename(上传文件路径)、mimetype(文件Mimetype)和postname(文件名),并给出了正确的参数实例。
摘要由CSDN通过智能技术生成
记录一个curl使用curl_file_create上传文件的时候遇到的坑

public function uploadFile($file){
    $param = [
        'agent' => AGENT,
        'file' => $file
    ];
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);//上传接口url
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_POST, true);//设置post请求
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//忽略ssl验证
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

    $res = curl_exec($curl);
    curl_close($curl);
    return $res;

}
//php5.5以后的版本有个自带的方法curl_file_create(),创建一个上传文件对象
$file = curl_file_create($_FILES['file']['tmp_name'], $_FILES['file']['type'], $_FILES['file']['name']);
uploadFile($file);
//下面是遇到的坑,主要是curl_file_create在使用的时候遇到的坑
开始使用的是CURLFile curl_file_create($filepath,'image/jpeg','test');
但是一直返回false
后来经过反复研究curl_file_create 的参数,发现filename不是上传到服务器之后的绝对路径
CURLFile curl_file_create ( string $filename [, string $mimetype [, string $postname ]] )

这里有3个参数

filename

上传文件的路径

mimetype

文件的Mimetype

postname

文件名。

开始我以为filename使用的是上传之后文件的绝对路径,一直返回false

后来发现其实不是这么回事,把参数改成这几个就可以了,都是前端上传过来时候的文件信息

$_FILES['file']['tmp_name'], $_FILES['file']['type'], $_FILES['file']['name']

$_FILES['file']['tmp_name'],上传到php后台临时文件名

$_FILES['file']['type'],文件类型

$_FILES['file']['name'],前端上传文件名

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值