一、普通上传到七牛云
/**
* @param $file 接收文件上传的值 这里的file是$_FILES获取的
* @return \think\response\Json
*/
public static function normal_upload($file){
if(!$file){
return ['msg'=>'文件不能为空', 'code'=>201, 'data'=>''];
}
require_once ROOT_PATH. 'vendor/qiniu/php-sdk/autoload.php'; //引入加载文件
//本地的文件路径
$localFilePath = $file['file']['tmp_name'];
//截取文件后缀名
//$suffix = '.jpg';
$suffix = strtolower(substr($file['file']['name'],strpos($file['file']['name'],'.')));
//生成一个唯一的文件名称,重命名 (md5加密原文件名+秒+随机数)
$fileName = md5($file['file']['name']) . date('s',time()) . rand(1,9999999);
$fileName .= $suffix;
//上传七牛云业务逻辑
$accessKey = config('site.qiniu_accesskey'); //去控制台的秘钥管理拿AK
$secretKey = config('site.qiniu_secretkey');//去控制台的秘钥管理拿SK
$auth = new Auth($accessKey, $secretKey);
//七牛云桶名,根据自己实际进行填写
$bucket = config('site.qiniu_bucket');
// 生成上传Token
$token = $auth->uploadToken($bucket);
// 构建 UploadManager 对象
$uploadMgr = new UploadManager();
// 调用 UploadManager 的 putFile 方法进行文件的上传。
list($ret, $err) = $uploadMgr->putFile($token, $fileName, $localFilePath);
//错误信息提示
if ($err != null) {
//可调整为错误页面
return ['msg'=>'上传失败', 'code'=>201, 'data'=>''];
}
//把七牛云图片路径存储到我们自己的数据库 七牛云图片路径
$imageUrl = config('site.qiniu_domain'). $fileName;
return ['msg'=>'上传成功', 'code'=>200, 'data'=>$imageUrl];
}
二、将base64图片上传到七牛云
/**
* 上传base64位图片到七牛云
* $image base64位图片流
*/
public static function uploadPicBase64($image)
{
// 去除base64,
$num = strpos($image,',');
$image = substr($image, $num+1);
$str= isset($image)?$image:false;
//生成图片key
// $rand = rand(111111,999999);
$now = \customlibrary\Commom::doOrderSn('000');
$name = 'pic/'.$now; //pic为存储空间的目录
$Key = base64_encode($name);
$accessKey = config('site.qiniu_accesskey'); //去控制台的秘钥管理拿AK
$secretKey = config('site.qiniu_secretkey');//去控制台的秘钥管理拿SK
$auth = new Auth($accessKey, $secretKey);
//七牛云桶名,根据自己实际进行填写
$bucket = config('site.qiniu_bucket');
// 生成上传Token
$upToken = $auth->uploadToken($bucket);
// $upToken = $this->getToken();
if($str)
{
$qiniu = self::phpCurlImg("http://upload-z2.qiniu.com/putb64/-1/key/".$Key,$str,$upToken);
//upload.qiniup.com 上传域名适用于华东空间。华北空间使用 upload-z1.qiniu.com,华南空间使用 upload-z2.qiniu.com,北美空间使用 upload-na0.qiniu.com。
$qiniuArr = json_decode($qiniu,true);
if(!empty($qiniuArr['key'])&&$qiniuArr['key']==$name)
{
return config('site.qiniu_domain').$qiniuArr['key']; //只会返回给你一个key,你需要将key和你的七牛云域名拼在一起就能访问
}
else
{
return false;
}
}
return false;
}
//七牛base64上传方法
public static function phpCurlImg($remote_server,$post_string,$upToken)
{
$headers = array();
$headers[] = 'Content-Type:application/octet-stream';
$headers[] = 'Authorization:UpToken '.$upToken;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$remote_server);
curl_setopt($ch, CURLOPT_HTTPHEADER ,$headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
注:这里你需要去七牛云安装第三方包
php composer.phar require qiniu/php-sdk
developer.qiniu.com/kodo/1241/p…
欢迎各位小伙伴来我的QQ交流群一起学习 :842167453