ThinkPHP3.2 实现阿里云OSS上传文件
2018-03-29 19:28
615 查看
0、配置文件Config,加入OSS配置选项,设置php.ini最大上传大小(自行解决,这里不做演示)
[code]'OSS' => array( 'ACCESS_KEY_ID' => '**************', //从OSS获得的AccessKeyId 'ACCESS_KEY_SECRET' => '**************', //从OSS获得的AccessKeySecret 'ENDPOINT' => 'oss-cn-beijing.aliyuncs.com', //您选定的OSS数据中心访问域名,例如oss-cn-hangzhou.aliyuncs.com 'BUCKET'=>'ycwlwhg' ),
1、index.html
[code]<form action="{:U('Home/Oss/post')}" method="post" enctype="multipart/form-data"> <input type="text" name="dir" placeholder="文件夹"> <input type="file" name="file[]" multiple /> <input type="submit" value="上传"> </form>
2、下载阿里云OSS的PHPSDK ,放置于ThinkPHP/Library/Vendor/下,起名叫OSS,图示
3、上传类
[code]<?php namespace Home\Controller; use OSS\Core\OssException; use OSS\OssClient; use Think\Controller; class OssController extends Controller { public function index() { $this->display(); } //获取文件名 //true 文件名 false后缀 function retrieve($file, $type = true) { $arr = explode('.', $file); if ($type) { return $arr[0]; } else { return $arr[1]; } } function Directory($dir) { if (is_dir($dir) || @mkdir($dir, 0777)) { //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存在”的警告。 //echo $dir . "创建成功<br>"; //输出创建成功的目录 } else { $dirArr = explode('/', $dir); //当子目录没创建成功时,试图创建父目录,用explode()函数以'/'分隔符切割成一个数组 array_pop($dirArr); //将数组中的最后一项(即子目录)弹出来, $newDir = implode('/', $dirArr); //重新组合成一个文件夹字符串 $this->Directory($newDir); //试图创建父目录 @mkdir($dir, 0777); } } public function post() { //要上传至OSS的文件夹路径 如 dir/dir1/dir2 $dir = I('dir'); $upload = new \Think\Upload();// 实例化上传类 $upload->maxSize = 3145728;// 设置附件上传大小 $upload->rootPath = './Public/'; // 设置附件上传根目录 $upload->savePath = '/uploads/'; // 设置附件上传(子)目录 vendor('OSS.autoload'); $ossConfig = C('OSS'); $accessKeyId = $ossConfig['ACCESS_KEY_ID'];//阿里云OSS ID $accessKeySecret = $ossConfig['ACCESS_KEY_SECRET'];//阿里云OSS 秘钥 $endpoint = $ossConfig['ENDPOINT'];//阿里云OSS 地址 $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint); $bucket = $ossConfig['BUCKET']; //oss中的文件上传空间 $info = $upload->upload(); if (!$info) {// 上传错误提示错误信息 //处理上传错误信息 $this->error($upload->getError()); } else {// 上传成功 foreach ($info as $k => $v){ $object = $dir . '/' . $v['name'];//想要保存文件的名称 //这个数组是存上传成功以后返回的访问路径,多文件时使用implode函数将其组合 $downlink[] = $bucket.'.'.$endpoint.'/'.$object; $file = './Public' . $info[$k]['savepath'] . $v['savename'];//本地文件路径 try { $ossClient->uploadFile($bucket, $object, $file); //上传成功 //这里可以删除上传到本地的文件。 unlink($file); } catch (OssException $e) { //上传失败 printf($e->getMessage() . "\n"); return; } } } } }
相关文章推荐
- ThinkPHP3.2 实现阿里云OSS上传文件
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程
- ThinkPHP3.2 中引入百度编辑器ueditor 并实现图片自动上传至阿里云OSS
- Spring整合阿里云OSS服务实现文件上传
- thinkPHP实现对象存储oss,将图片上传到阿里云oss
- ThinkPHP 文件上传到阿里云OSS上(干货)
- ThinkPHP 文件上传到阿里云OSS上
- thinkPHP3.2简单实现文件上传的方法
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
- OSS阿里云存储——整合Spring文件上传,实现动静网站资源分离
- 阿里云oss浏览器开发(Browser-JS-SDK )实现多文件上传并监测上传进度
- thinkPHP实现对象存储oss,将图片上传到阿里云oss
- thinkPHP3.2简单实现文件上传的方法
- 在thinkphp中使用阿里云OSS自定义驱动上传文件
- (转)ThinkPHP 文件上传到阿里云OSS上 (可后端直接上传本地至OSS,不通过前端。可批量)
- 阿里云对象存储OSS--实现随时随地上传文件到阿里云
- extjs3.2+struts2实现多文件上传excel并插入到数据库
- java 上传文件到oss(阿里云)
- jquery 判断当前上传文件大小限制上传格式 搭配thinkphp实现上传即预览(模拟异步上传)
- OSS阿里云文件上传 demo