自动上传指定文件夹下的所有文件到阿里云oss储存
来源:互联网 发布:身份证 代数 差别 知乎 编辑:程序博客网 时间:2024/05/17 22:32
一、环境
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; } }}五、如果对你有用,请点赞;欢迎评论
阅读全文
3 0
- 自动上传指定文件夹下的所有文件到阿里云oss储存
- java 上传文件到oss(阿里云)
- 上传文件到阿里云OSS
- springboot上传文件到阿里云OSS
- 复制原文件夹下的所有文件到指定文件夹
- 拷贝某个文件夹下的所有文件到指定文件夹
- 阿里云oss java上传,在bucket下新建文件夹
- 阿里云OSS 上传文件
- 阿里云OSS 文件上传
- Java自动读取指定文件夹下的所有文件
- ThinkPHP 文件上传到阿里云OSS上
- 关于使用阿里云OSS对象储存上传大视频和转码的一些心得
- 阿里oss文件上传
- 阿里云上传文件,下载文件 oss
- 文件上传-阿里云OSS-存储文件
- 如何使用阿里云OSS储存文件和注意事项
- 文件上传结合springmvc至阿里云的oss
- C++ 将指定文件夹下的所有文件拷贝到另一文件夹下
- java web开发——session简介
- 从服务器下载资源三
- 不能上网如何判断问题以及绑定mac地址
- reactNative 开发之按钮的使用
- java学习笔记
- 自动上传指定文件夹下的所有文件到阿里云oss储存
- 提交表单--文件
- 夏至未至,修正氧趣臭氧油教你如何在夏天保持小清新!
- Viewpager + Fragment 的双层嵌套
- 如何测试系统是否支持ext4
- Python3之Requests模块详解
- ubantu python figure can't show
- python3.5之扩展模块
- [LeetCode] 95. Unique Binary Search Trees II