//$path 服务器上图片的路径
public function upload_file($path){
$data = [
'file'=> curl_file_create($path),
'token'=> $this->qiniutoken()
];
$url = 'http://upload.qiniup.com/';
$headers = array('Content-Type: multipart/form-data');
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return json_decode($result);
}
//获取七牛云图片上传要的token值
public function qiniutoken()
{
$setting = C('UPLOAD_FILE_QINIU');
$qiniu = new \Think\Upload\Driver\Qiniu\QiniuStorage($setting['driverConfig']);
return $qiniu->UploadToken($setting['driverConfig']['secretKey'],$setting['driverConfig']['accessKey']);
}
//删除服务器上的图片,我这里都是在一个文件夹下,多个文件夹就递归
public function deldir($val){
//如果是目录则继续
$del_path = './Public/Uploads/';
if(is_dir($del_path)){
unlink($del_path.$val);
//扫描一个文件夹内的所有文件夹和文件并返回数组
// $p = scandir($del_path);
// foreach($p as $val){
// //排除目录中的.和..
// if($val !="." && $val !=".."){
// //如果是目录则递归子目录,继续操作
// if(is_dir($del_path.$val)){
// //子目录中操作删除文件夹和文件
// deldir($del_path.$val.'/');
// //目录清空后删除空文件夹
// @rmdir($del_path.$val.'/');
// }else{
// //如果是文件直接删除
// unlink($del_path.$val);
// }
// }
// }
}
}
然后就是上传图片的方法了,这里的方法是上传单张图片,上传成功后会返回一个对象,如图
然后根据你自己的情况封装方法,至于php 模拟表单 post多图上传,我还没找到办法,有知道的大佬请指教一下小弟,谢谢
public function Qiniu()
{
$path = './Public/Uploads/ss.jpg';//图片路径
$data = $this->upload_file($path);
echo "<pre>";
print_r($data);
exit;
}
都需要引入php七牛云上传类,才能获取token
thinkphp版本不一样好像位置不一样, 我也不太清楚, 如有知道的请告诉我一下,小弟感激不尽