关于oss 文件私有化的设置
有这么一个需求,分享给用户一个链接,用户可以通过这个链接获取某个文件,设置某一段时间之后链接对应的文件失去下载权限,用户要想下载需要重新获取链接。
如果说对应文件在自己的服务器上面,那就好做了,各种骚操作随意添加。但是如果文件不在自己服务器上面的话,需要怎么做呢?查看oss的文档之后找到答案。
文件权限描述
具体实现的方法流程
文件上传之后,请求接口,将文件的公共权限设置为私有,
方法在对应的sdk 里边有
putObjectAcl 方法为文档下载的sdk 里边封装好的,直接使用就行了
$object = 'test.zip';//上传的文件的名称,如果在oss里边某个文件夹下则带上文件夹名称 test/test.zip
$bucket = 'xxxxxxxx';//上传使用的bucket
$acl = 'private';//权限,设置为私有
$oss = getOSSClient();
$setFilePrivate = $oss->putObjectAcl($bucket, $object, $acl);
文件下载
同样是sdk里边的方法
signUrl
$object = 'test.zip';//要获取的文件的名称
$bucket = 'xxxx';//上传使用的bucket
$timeout = '30';//链接有效时间,单位为秒,默认3600s(实际测试不太准确)
$oss = getOSSClient();
$signedUrl = $oss->signUrl($bucket, $object, $timeout);
得到的链接
http://xxxxxxx/test.zip?OSSAccessKeyId=LTAI4G5oAsdfsdfsfBuCf2Pa&Expires=1592485264&Signature=b4JkfdfdfhzIsn7X%2FXgnwO6BH%2FvpE%3D