GitHub:https://github.com/iiDestiny/...最近有时间把之前写的oss扩展包升级了。SDK完整处理能力插件优化直传配置获取方式,增加自定义回调参数。增加了切换bucket的功能,优化readme文档“私有bucket”访问资源,让读者更容易理解扩展包需要PHP>=7.0才能安装命令$composerrequire"iidestiny/laravel-filesystem-oss"-vvv配置服务提供者Iidestiny\LaravelFilesystemOss\OssStorageServiceProvider::class注册在config/app.phpfile:'providers'=>[//其他服务提供者...Iidestiny\LaravelFilesystemOss\OssStorageServiceProvider::class,],Laravel5.5+会自动注册服务提供者或者忽略在config/filesystems.php配置文件中添加你的新驱动[//...'oss'=>['driver'=>'oss','root'=>'',//设置根前缀'access_key'=>env('OSS_ACCESS_KEY'),'secret_key'=>env('OSS_SECRET_KEY'),'endpoint'=>env('OSS_ENDPOINT'),//这里使用ssl设置如:https://oss-cn-beijing.aliyuncs.com'bucket'=>env('OSS_BUCKET'),'isCName'=>env('OSS_IS_CNAME',false),//如果isCname为false,端点需要配置oss提供的域名,如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,cname或cdn,请到阿里oss后台配置绑定buckets//如果需要切换的bucket比较多,将所有bucket相加,填写在默认的桶中,不要添加Gotobuckets'buckets'=>['test'=>['access_key'=>env('OSS_ACCESS_KEY'),'secret_key'=>env('OSS_SECRET_KEY'),'bucket'=>env('OSS_TEST_BUCKET'),'endpoint'=>env('OSS_TEST_ENDPOINT'),'isCName'=>env('OSS_TEST_IS_CNAME',false),],//...],],//..]];基本用法put('avatars/filename.jpg',$fileContents);//检查文件是否存在$exists=$disk->has('file.jpg');//获取文件修改时间$time=$disk->lastModified('file1.jpg');$time=$disk->getTimestamp('file1.jpg');//复制文件$disk->copy('old/file1.jpg','new/file1.jpg');//移动文件也可以重命名$disk->move('old/file1.jpg','new/file1.jpg');//获取文件内容$contents=$disk->read('folder/my_file.txt');上面的方法可以在laravel-filesystem-doc中查看高级使用//获取文件访问地址"公共读桶只会生效"$url=$disk->getUrl('folder/my_file.txt');//设置文件访问有效期"$timeout过期秒数""私有bucket可以看到效果"$url=$disk->signUrl('cat.png',$timeout,['x-oss-process'=>'image/circle,r_100']);//功能同signurl,不同的是$expiration是未来的过期时间,比如:2019-05-0517:50:32,链接会是invalid$url=$disk->getTemporaryUrl('file.md',$expiration);//可以切换到其他bucket"需要在config配置文件中配置bucket"$exists=$disk->bucket('test')->有('文件.jpg');获取官方完整的OSS处理能力阿里官方的SDK可能处理的东西比较多,如果你想获取完整的功能,可以通过这个插件获取,那么你就有了完整的oss处理能力//获取完整的处理能力$kernel=$disk->内核();//例如:防盗链功能$refererConfig=newRefererConfig();//设置允许空Referer$refererConfig->setAllowEmptyReferer(true);//添加Referer白名单。Referer参数支持通配符星号(*)和问号(?)。$refererConfig->addReferer("www.aliyun.com");$refererConfig->addReferer("www.aliyuncs.com");$kernel->putBucketReferer($bucket,$refererConfig);更多功能请参考官方SDK手册前端web直传配置配置oss直传有3种方式。目前扩展包使用最全的服务端签名直传,并设置了上传回调方式。扩展包只生成前端页面上传所需的签名参数,即可实现前端上传。参考官方文档中的例子或者自己搜索/***1.前缀如:'images/'*2.回调服务器url*3.回调自定义参数,oss回传给应用时会包含server*4.当前直接配置链接失效日期*/$config=$disk->signatureConfig($prefix='/',$callBackUrl='',$customData=[],$expire=30);directtransferbacktoverificationsignaturewhensetdirecttransfer回调后可以使用签名验证插件验证获取oss返回的数据文档。注意:如果没有Authorization头信息,验证失败,需要先在apache或nginx中设置rewrite。以apache为例,修改httpd.conf中的DirectoryIndex在index.php中这一行下面添加“RewriteEngineOn”和“RewriteRule.*-[env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]”//签名验证,就这么简单//$verifysign验证结果,$data回调Datalist($verify,$data)=$disk->verify();//[$verify,$data]=$disk->verify();//php7.1+if(!$verify){//验证失败处理,此时$data为签名验证失败的提示信息}//注意一定要返回json格式的字符串,因为oss服务器只接受json格式,否则会向前端报CallbackFailed返回响应()->json($data);直接传回签名校验后返回给前端的数据“包括自定义参数”,例如{"filename":"user/15854050909488182.png","size":"56039","mimeType":"image/png","height":"473","width":"470","custom_name":"zhangsan","custom_age":"24"}这个其实要看你的callback通知方法怎么返回了?如果直接按照文档给的方法返回,会是这个样子。前端直传组件共享“vue+element”
