文件流格式与base64格式图片上传到七牛

原文链接: http://www.cnblogs.com/nnhgd/p/9844026.html

base64格式的上传七牛有提供接口,但一般官方提供的SDK默认的是空间是华东,我的是华南的所以就报错了,就换成了下面的方法

文件流格式:

public function upload_img()
{
if (request()->isPost()) {
$file = request()->file('img');
$info = $file->validate(['size' => 2097152, 'ext' => 'jpg,png,gif']);
if (!$info) {
return return_json(0, $info->getError());
}
$result = upload($file);
if (!$result['status']) {
return return_json(0, $result['msg']);
} else {
if ($result) {
$data = [
'path' => config('DOMAIN') . '/' . $result['data'],
'pic_name' => $result['data'],
];
return return_json(1, '上传成功', $data);
} else {
return return_json(0, '上传失败');
}
}
} else {
return return_json(-1);
}
}


把upload文件放到common中
//七牛上传图片
function upload($file)
{
// 要上传图片的本地路径
$filePath = $file->getRealPath();
$ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION); //后缀
// if($ext!='png' && $ext!='jpg' && $ext!='jpeg' && $ext!='gif')
// return ["status" => 0, "msg" => '格式有误', "data" => ""];
//获取当前控制器名称
// $controllerName=$this->getContro();
$controllerName = 'editinfo';
// 上传到七牛后保存的文件名
$key = substr(md5($file->getRealPath()), 0, 5) . date('YmdHis') . rand(0, 9999) . '.' . $ext;
// require_once APP_PATH . '/../vendor/qiniu/autoload.php';
// 需要填写你的 Access Key Secret Key
$accessKey = config('ACCESSKEY');
$secretKey = config('SECRETKEY');
// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
// 要上传的空间
$bucket = config('BUCKET');
$domain = config('DOMAIN');
$token = $auth->uploadToken($bucket);
// 初始化 UploadManager 对象并进行文件的上传
$uploadMgr = new UploadManager();
// 调用 UploadManager putFile 方法进行文件的上传
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
if ($err !== NULL) {
// return result_set(0,$err);
return ["status" => 0, "msg" => $err, "data" => ""];
} else {
// //返回图片的完整URL
// $thumb = 'http://'.$domain.'/'.$ret['key'];
// $rel = db('member')->where('uid',$uid)->update(array('thumb'=>$thumb));
// if($rel){
// return result_set(1,'修改成功',$thumb);
// }else{
// return result_set(0,'修改失败');
// }

return ['status' => 1, 'data' => $ret['key']];
}
 

base64格式:

public function base64_upload()
{
if (!request()->isPost()) {
return return_json(-1);
}
$base64 = request()->post('img');

$file = $this->base64_image_content($base64,"");
$guid = time().rand(1111,9999);
$key = md5($guid) . 'jpg';
$result = setQiniuUplaod($file,$key);
if (!$result['status']) {
return return_json(0, $result['msg']);
} else {
if ($result) {
$data = [
'path' => config('DOMAIN'). $result['data'],
'pic_name' => $result['data'],
];
return return_json(1, '上传成功', $data);
} else {
return return_json(0, '上传失败');
}
}


}



/**
* [Base64图片转换为本地图片并保存]
* @E-mial [email protected]
* @TIME 2017-04-07
* @WEB http://blog.iinu.com.cn
* @param [Base64] $base64_image_content [要保存的Base64]
* @param [目录] $path [要保存的路径]
*/
function base64_image_content($base64_image_content,$path)
{
//匹配出图片的格式
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) {

$new_file = date('Ymdhis', time());
$dir = './static/images/';
is_dir($dir) OR mkdir($dir, 0777, true);

//$new_file = $new_file . time() . ".{$type}";
if (file_put_contents($dir.$new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))) {
return $dir.$new_file;
} else {
return false;
}
} else {
return false;
}
}


setQiniuUplaod文件放到common中
function setQiniuUplaod($filePath,$key){
//Access Key Secret Key
$accessKey = config('ACCESSKEY');
$secretKey = config('SECRETKEY');
//构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
//要上传的空间
$bucket = config('BUCKET');
$domain = "";
$token = $auth->uploadToken($bucket);
// 初始化 UploadManager 对象并进行文件的上传
$uploadMgr = new UploadManager();
// 调用 UploadManager putFile 方法进行文件的上传
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);

if ($err !== null) {
return ["status" => 0, "msg" => $err, "data" => ""];
} else {
//返回图片的完整URL
return ['status' => 1, 'data' => $ret['key']];
}
}

转载于:https://www.cnblogs.com/nnhgd/p/9844026.html

猜你喜欢

转载自blog.csdn.net/weixin_30414245/article/details/94883851