OSS简记述

来源:互联网 发布:java试题库及答案 编辑:程序博客网 时间:2024/05/29 09:51

当了好久的菜鸟,终于能写点感觉很高大上的东西了,那就是使用阿里提供的OSS服务进行文件的上传和删除。这里主要的内容包括:

  • 使用OSS进行文件的上传(本地上传,不是用户直传)
  • 使用OSS进行文件的删除
  • 通过使用获得签名的url进行文件的下载

本人是PHP程序员,所以下面全部例子都是使用PHP。至于文件上传中的用户直传,等我修炼了JS,JQuery等之后再来尝试。阿里给的那个例子我尝试成功过,但是只能使用他们给出的那个JS插件,而加载那个插件又慢的要死。。。。。

好了进入正题。

Part 1:文件上传

HTML页面

<form action="?" method="post" enctype="multipart/form-data">    <!--支持多文件处理-->    <input type='file' name='attachment[]'>    <input type='file' name='attachment[]'></form>

后台处理页面

如果不想将文件上传到本地进行处理之后,再发送给OSS服务器,那么就让文件在上传到服务器之后,保存在tmp目录下时就进行处理:

//$filePath_array就是$_FILE['input file name']function uploadFiles($filePath_array,$pre){    $accessKeyId = "";    $accessKeySecret = "";    $endPoint = "";//由于我使用的是tp的框架,所以调用路径是这样的    $oss = new \Vendor\OSS\OssClient($accessKeyId, $accessKeySecret, $endPoint);    $data = array();    $files = array();//将$_FILES格式的格式转换成我希望的格式://0=>array('fileName'=>$object,'filePath'=>$filePath)    $count = count($filePath_array['name']);    for ($index = 0; $index < $count; $index++) {        $files[$index] = array(            'fileName' => $pre.$filePath_array['name'][$index],            'filePath' => $filePath_array['tmp_name'][$index]        );    }//    上面应该要加上文件后缀的检查    foreach ($files as $file) {        $data[] = $oss->uploadFile($bucket, $file['fileName'], $file['filePath']);    }    return $data;}

这里有几个建议:

  • 把$_FILES打印出来看一下,比较好理解一点
  • $file[‘fileName’]就是最后保存的文件名,也就是OSS的最后保存的文件名,可以随机,也可以使用原始文件名
  • 最好再加上文件名后缀验证,这些都是很好改的内容
  • 最好再看一下$data的数据,有很多有用的信息

调用上面函数的方法如下:

$pre="Notice/".date("Y-m-d")."/";$info=uploadFiles($_FILES['attachment'],$pre);

由于OSS的控制台页面提供类似文件夹的服务,所以为了使数据能更好的归类查询,这里增加一个前缀:$pre

Part 2:文件删除

感觉很奇怪,oss给的sdk里面没有批量上传,却有批量删除。

/** * $files_array的格式是array(0=>'object_name',1=>'object_name') */function delFiles($files_array){    $accessKeyId = "";    $accessKeySecret = "";    $endPoint = "";    $bucket = "";    $oss = new \Vendor\OSS\OssClient($accessKeyId, $accessKeySecret, $endPoint);    $data=$oss->deleteObjects($bucket,$files_array);    return $data;}

这里的$data的返回内容跟文件上传是类似的,而且$files_array的格式也注意一下,是一个二维数组,支持多文件同时删除的。

Part 3:文件下载

/** * 获取文件下载的签名url * @param $file:Object名字 * @return string */function Signatureurl($file){    $file=substr($file,50,strlen($file)-50);    $ak="";    $sk="";    $domain="";//图片域名或bucket域名    $expire=time()+3600;    $bucketname="";    $StringToSign="GET\n\n\n".$expire."\n/".$bucketname."/".$file;    $Sign=base64_encode(hash_hmac("sha1",$StringToSign,$sk,true));    $url=$domain.urlencode($file)."?OSSAccessKeyId=".$ak."&Expires=".$expire."&Signature=".urlencode($Sign);    return $url;}

这个源码在阿里的开源手册上有,我这里算是盗用。。。。。其实就是获取文件的一个经过签名的url地址,使用这个地址就可以对文件进行下载,当然这段代码最珍贵的不是这个,而是他对oss的签名做了一个实例的展示,之后我们尝试第三方文件直接传输到OSS服务器做了铺垫。至于具体的签名方式,我暂时看不懂他官方给出的文档解释。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 穿高帮钉鞋踢人造草出现水泡怎么办 耐克大吕布鞋面上的标志起来怎么办 国三柴油车环保查尾气超标怎么办 手上被玻璃手上扎进玻璃丝怎么办 月子腰疼怎么办能养过来吗 躺太久屁股长一粒一粒的痒怎么办啊 乳腺癌两年后手臂疼胳膊肿怎么办 胳膊疼就和抻筋是的怎么办 四岁胳膊扭了肿了怎么办 干燥综合症使皮肤变黑色了怎么办 刚生的小孩脖子上有淋巴结怎么办 地包天矫正期间嘴歪了怎么办 5个月的宝宝歪胫怎么办 三个多月的宝宝有点斜颈怎么办 5月宝宝有点斜颈偏向左侧怎么办 外斜术后变周期性内斜怎么办 右腰劳损休息一个多月还痛怎么办 宝宝鼻子不通气用嘴呼吸怎么办 窦性心律过速怎么办st-t改变 跑步机跑带上撒油跑起来滑怎么办 娃儿上嘴唇里面破了怎么办图片 支付宝添加好友点忽略了怎么办 如果综合评价考了两间大学怎么办 国二报名时民族错了怎么办 屁股凹陷下去一块已经萎缩了怎么办 我家孩子上高中了英语不好怎么办 驼背脖子向前倾怎么办用背背佳 屁股大又肥是骨盆前倾怎么办 手术40多天引起小腿变细了怎么办 老师教育学生学生跑出教室你怎么办 有矛盾舍友发朋友圈攻击我怎么办 飞机杯送的润滑油很快用完了怎么办 人笨记性不好内向反应迟钝该怎么办 洗衣机滋生了大量的霉菌在怎么办? 爸妈给兄弟买的房子贵很多怎么办 输了十几万 不敢跟爸妈讲怎么办 赌博欠2万不敢和爸妈讲怎么办 学校凳子坏了丢了 现在要查怎么办 我想写字可就是写的不好看怎么办 我的字写的很丑怎么办 大母指腱鞘炎好了之后又犯了怎么办