自动上传指定文件夹下的所有文件到阿里云oss储存
2017-06-30 11:02
323 查看
一、环境
1、阿里云服务器
2、php5.0+mysql+tinkphp3.2
3、oss储存的SDK
二、逻辑
第一步:去阿里云后台获取accessKeyId和accessKeySecret
第二步:到阿里云oss对象储存去创建存储空间bucket;获取OSS地址和bucket的空间名字
第三步:遍历指定文件夹及子文件夹下的所有文件
第四步:下载oss的sdk,实现上传到OSS的bucket
第五步;指定定时任务,每隔2秒执行一次(用来实现自动上传到OSS,如果是手动可以省略此步);
三、目录结构
将下载的SDK放在Vendor目录下。
四、代码
五、如果对你有用,请点赞;欢迎评论
1、阿里云服务器
2、php5.0+mysql+tinkphp3.2
3、oss储存的SDK
二、逻辑
第一步:去阿里云后台获取accessKeyId和accessKeySecret
第二步:到阿里云oss对象储存去创建存储空间bucket;获取OSS地址和bucket的空间名字
第三步:遍历指定文件夹及子文件夹下的所有文件
第四步:下载oss的sdk,实现上传到OSS的bucket
第五步;指定定时任务,每隔2秒执行一次(用来实现自动上传到OSS,如果是手动可以省略此步);
三、目录结构
将下载的SDK放在Vendor目录下。
四、代码
<?php // 首页 namespace Home\Controller; use Think\Controller; use OSS\Core\OssException;//不然OssException 报错 class IndexController extends Controller { public function ossscript() { do{ //$timing = M('one_timing')->where(array('id'=>1))->find();//通过后台控制数据库的数据 来控制此循环 $timing['timing'] = 1; ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=2;// 每隔2秒运行 //todo //echo time()."<br>"; $path = '../img';//文件位置 ‘../’项目之外同级目录 ‘./’项目之内同级目录 $this->traverse($path); sleep($interval); } while($timing['timing'] == 1);//当为true时 无限循环 } public function traverse($path = '') { //遍历文件夹下面的文件 $current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目 $sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径 if($file == '.' || $file == '..') { continue; } else if(is_dir($sub_dir)) { //如果是目录,进行递归 //echo 'mulu ' . $file . ':<br>'; $this->traverse($sub_dir); } else { //如果是文件,直接输出 $url = $path.'/'.$file; //echo $url. '<br>'; //echo substr($url, 2);die; $this->uploadoss($url); } } } public function uploadoss($file_url){ /* * $file_url 本地文件路劲 * $file_name 文件名字 * */ //上传到阿里云 //echo $file_url; //echo $file_name;die; vendor('Aliyun.autoload'); $accessKeyId = "LTAI3HLP6LOGPx1E";//去阿里云后台获取秘钥 $accessKeySecret = "NE0dRfO3SKsiQ1prGfIg259Nc9vP7W";//去阿里云后台获取秘钥 $endpoint = "oss-cn-shanghai.aliyuncs.com";//你的阿里云OSS地址 $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint); $bucket= "public678";//oss中的文件上传空间 $file = $file_url;//文件路径,必须是本地的。 //$object = 'uploads/comImg/'.date('Y-m-d').'/'.$file_name;//想要保存文件的名称 $file_url = substr($file_url, 3);//去掉前面的‘../’符号 $object =str_replace("\\","/",$file_url); try{ $mm = $ossClient->uploadFile($bucket,$object,$file); //print_r($mm);die; //echo $mm;die; //上传成功,自己编码 unlink($file);//这里可以删除上传到本地的文件。 } catch(OssException $e) { //上传失败,自己编码 printf($e->getMessage() . "\n"); return; } } }
五、如果对你有用,请点赞;欢迎评论
相关文章推荐
- 上传指定url文件到阿里云oss
- Java自动读取指定文件夹下所有文件的方法
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小
- Java自动读取指定文件夹下的所有文件
- 阿里云对象存储OSS--实现随时随地上传文件到阿里云
- c++遍历指定文件夹下的所有的文件
- java 多线程查找文件夹下所有文件中指定的字符串
- 用封装的方法实现从文件夹名下所有的指定类型文件数据导入到数据库
- C#两种方式获取指定文件夹下所有子目录及文件(转载)
- Android 拷贝assets目录下所有文件及文件夹到指定路径
- Python清空指定文件夹下所有文件的方法
- 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手
- 「python自动化运维」之自动生成配置文件并上传到目标服务器指定的位置
- iOS --生产JSON格式,创建JSON文件,创建文件夹,指定储存
- 如何读取一个文件夹下的所有图像文件,并制作负样本到指定目录
- DOS批处理器移动指定数量文件到一个临时文件夹,上传到linux服务器,并删除临时文件夹下的文件
- ThinkPHP 文件上传到阿里云OSS上
- 阿里云oss上传文件,每次只能上传很小一部分
- 对指定文件夹进行递归遍历,将所有文件存到QStringList里。两种方法
- 删除指定文件夹下所有.php文件,如果子文件夹是空文件夹,也删除。