Jessie-candy

1、下载OSS文件放在网站根目录下(OSS文件下载地址:https://gitee.com/jth1234/oss_files.git)

2、在入口文件中加载OSS

3、config文件配置oss信息(ossKeyId、ossKeySecret、endpoint以上信息开通阿里云oss服务后可获得;bucket是创建的存储目录名)

4、上传base64图片(UploadController.php)

 1 <?php
 2 namespace app\api\controller;
 3 use think\Controller;
 4 use think\Db;
 5 use OSS\OssClient;
 6 use OSS\Core\OssException;
 7 class UploadController extends Controller {
 8     /**
 9      * 上传图片到oss
10      * @param string $info  base64图片 
11      * 
12      */
13     public function upload_pic(){
14         $imgData = input(\'info\',\'\');    
15         if($imgData){
16             $img_len = strlen($imgData);
17             $imgData = str_replace(\'\n\',\'\',$imgData);
18             $imgData = str_replace(\'\r\',\'\',$imgData);
19             $imgData = str_replace(\'\t\',\'\',$imgData);
20             $imgData = str_replace(PHP_EOL,\'\',$imgData);
21             $imgData = str_replace(\'\\\',\'\',$imgData);
22             $imgData = str_replace(\' \',\'+\',$imgData);
23             
24             $host = config(\'public.host\');
25             
26             $date = date(\'Y-m-d\');
27             $dir = "./public/user/$date";
28             if (!file_exists($dir)){
29                 mkdir ($dir,0777,true);             
30             }
31             $img = base64_decode($imgData);
32             $uniqid_name = md5(uniqid(rand()));
33             $tmpImg = \'./public/user/\'.$date.\'/user_\'.$uniqid_name.\'.jpg\';
34             $tmpImg1 = \'/public/user/\'.$date.\'/user_\'.$uniqid_name.\'.jpg\';
35             $a = file_put_contents($tmpImg,$img);//保存图片,返回的是字节数
36             if($a){
37                 $accessKeyId = config(\'oss.ossKeyId\');
38                 $accessKeySecret = config(\'oss.ossKeySecret\');
39                 // Endpoint以杭州为例,其它Region请按实际情况填写。
40                 $endpoint = config(\'oss.endpoint\');
41                 // 存储空间名称
42                 $bucket= config(\'oss.bucket\');
43                 // 文件名称
44                 $object = \'user/\'.$date.\'/user_\'.$uniqid_name.\'.jpg\';
45                 // <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt
46                 $filePath = \'./public/user/\'.$date.\'/user_\'.$uniqid_name.\'.jpg\';
47                 try{
48                     $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
49                     $ossClient->uploadFile($bucket, $object, $filePath);
50                     unlink($filePath);
51                 } catch(OssException $e) {
52                     $data=array(\'code\'=>config(\'code.error\'),\'msg\'=>"上传失败");
53                     return json($data);
54                 }
55                 $img_src = config(\'oss.host\')."/".$object;
56                 $data=array(\'code\'=>config(\'code.success\'),\'msg\'=>"上传成功",\'data\'=>$img_src);
57                 return json($data);
58             }else{
59                 $data=array(\'code\'=>config(\'code.error\'),\'msg\'=>"上传失败");
60                 return json($data);
61             }
62         }else{
63             $data=array(\'code\'=>config(\'code.error\'),\'msg\'=>"上传图片不能为空");
64             return json($data);
65         }   
66     }
67     /**
68      * 删除OSS上的图片
69      * @param string $info  OSS上完整的图片地址 
70      * 
71      */
72     public function pic_del(){
73         $info = input(\'pic_addr\',\'\'); 
74         if(!empty($info)){
75             $ex = config(\'oss.host\').\'/\';
76             $arr = explode($ex,$info);
77             $accessKeyId = config(\'oss.ossKeyId\');
78             $accessKeySecret = config(\'oss.ossKeySecret\');
79             $endpoint = config(\'oss.endpoint\');
80             $bucket= config(\'oss.bucket\');
81             $object = $arr[1];
82             try{
83                 $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
84                 $ossClient->deleteObject($bucket, $object);
85             } catch(OssException $e) {
86                 printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n");
87                 printf($e->getMessage() . "\n");
88                 return;                
89             }            
90         }
91         $data=array(\'code\'=>config(\'code.success\'),\'msg\'=>"删除成功");
92         return json($data);
93     }
94 }

 

分类:

技术点:

相关文章: