ThinkPHP 文件上传到阿里云OSS上(干货)
参考:http://www.thinkphp.cn/extend/789.html
1、前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-php-sdk/releases。
这里介绍源码部署:Source code下载下来。.phar其实就是一个打包文件,直接引用后就能用,大家自己去试试吧,功能是一样的。
2、将下载下来的压缩包解压后放到项目ThinkPHP\Library\Vendor\aliyun路径下。aliyun文件夹是我自己建的,大家可以自己命名。
3、在控制器中编写代码: 控制器中要加入
use OSS\Core\OssException;//不然OssException 报错 配合upload上传类(图片为例)
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Public/uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
$upload->saveName = array('uniqid','');
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
//处理上传错误信息
}else{// 上传成功
vendor('aliyun.autoload');
$accessKeyId = "";//去阿里云后台获取秘钥
$accessKeySecret = "";//去阿里云后台获取秘钥
$endpoint = "";//你的阿里云OSS地址
$ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint); $bucket= "";//oss中的文件上传空间
$object = date('Y-m-d').'/'.$info['imgfile']['savename'];//想要保存文件的名称
$file = './Public/uploads/'.$info['imgfile']['savepath'].$info['imgfile']['savename'];//文件路径,必须是本地的。
try{
$ossClient->uploadFile($bucket,$object,$file);
//上传成功,自己编码
//这里可以删除上传到本地的文件。unlink($file);
} catch(OssException $e) {
//上传失败,自己编码
printf($e->getMessage() . "\n");
return;
}
}
项目实例,,我是这样处理的。。
第一步:下载:https://github.com/aliyun/aliyun-oss-php-sdk/releases
核心文件:
放到ThinkPHP\Library\Vendor\下,新建文件aliyun。
第二步,配置文件:config.php..这个不能出错。。。
//阿里云OSS文件上传配置
'accessKeyId' => 'XXXX',//去阿里云后台获取秘钥
'accessKeySecret' => 'yyyy',//去阿里云后台获取秘钥
'endpoint' => 'zzzz',//你的阿里云OSS地址
'bucket' => 'wwwwww',//oss中的文件上传空间
第三步:要引用的控制器下引用:use OSS\Core\OssException;
如:
if ($_FILES['plan_name']['size'] < 204800000 && in_array($type['extension'], array('pdf'))) {
if ($a = uploadImage($_FILES[plan_name], $this->admin[id] . '_' . $t)) {
$_POST[plan_name] = $this->admin[id] . '_' . $t;
}
// 2016-1-12 添加开始
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 314572800 ;// 设置附件上传大小
$upload->exts = array('pdf','PDF');// 设置附件上传类型
$upload->rootPath = './Application/Public/upload/'; // 设置附件上传根目录
$upload->savePath = 'fqlc/';
$info = $upload->upload();
$getOssPdfUrl = '';
if($info){
vendor('aliyun.autoload');
$ossClient = new \OSS\OssClient(C('accessKeyId'),C('accessKeySecret'),C('endpoint'));
$object = date('Y-m-d').'/'.$info['plan_name']['savename'];//想要保存文件的名称
$file = $upload->rootPath.$info['plan_name']['savepath'].$info['plan_name']['savename'];//文件路径,必须是本地的。
try{
$getOssInfo = $ossClient->uploadFile(C('bucket'),$object,$file);
$getOssPdfUrl = $getOssInfo['info']['url'];
if($getOssPdfUrl){
unlink($file);
// rmdir($upload->rootPath.$upload->savePath,0777);
}
}catch(OssException $e){
printf($e->getMessage() . "\n");
return;
}
}
// 2016-1-12 添加结束
}
}
第四步。。测试,,OK。。。
ThinkPHP 文件上传到阿里云OSS上(干货)的更多相关文章
- Windows环境下用C#编程将文件上传至阿里云OSS笔记
Windows环境下用C#编程将文件上传至阿里云OSS笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/detai ...
- Java下载https文件上传到阿里云oss服务器
Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...
- Linux本地数据上传到阿里云OSS
这篇文章主要是介绍如何将服务器本地的数据上传到阿里云OSS的指定bucket中,最重要的参考文档是数据迁移单机部署.我第一次上传数据到OSS上时,步骤要比前面的链接中介绍的要麻烦,ossimport工 ...
- 备份MySQL数据库并上传到阿里云OSS存储
1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 官网及文档: htt ...
- 前端(react)上传到阿里云OSS存储 实例
需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...
- C# .net Ueditor实现图片上传到阿里云OSS 对象存储
在学习的时候,项目中需要实现在Ueditor编辑器中将图片上传到云储存中,老师演示的是上传到又拍云存储,既然看了一遍,直接照搬不算本事,咱们可以依葫芦画瓢自己来动手玩玩其它的云存储服务. 现在云计算产 ...
- springmvc学习笔记--支持文件上传和阿里云OSS API简介
前言: Web开发中图片上传的功能很常见, 本篇博客来讲述下springmvc如何实现图片上传的功能. 主要讲述依赖包引入, 配置项, 本地存储和云存储方案(阿里云的OSS服务). 铺垫: 文件上传是 ...
- django 文件上传(阿里云oss)下载(支持大文件下载)
1.文件上传 Models 设计 class Upload_File(models.Model): image = models.FileField(upload_to='file/%Y/%m',de ...
- egg-multipart + el-upload 实现带参图片上传至阿里云OSS
egg-multipart有两种模式:file和stream el-upload参数传递有两种方式:利用自带参数data和手动添加参数 egg-multipart介绍 一.file 模式下的带参传递 ...
随机推荐
- 冲刺NOIP复习,算法知识点总结
前言 离NOIP还有一个星期,匆忙的把整理的算法补充完善,看着当时的整理觉得那时还年少.第二页贴了几张从贴吧里找来的图片,看着就很热血的.当年来学这个竞赛就是为了兴趣,感受计算机之美的. ...
- IDEA 配置datasource,提升编码效率,让你在 Mapper.xml 中编写sql可以飞起来~
IDEA 2018 创建springboot工程后,如果你打开一个.sql文件,或者一个mybatis的mapper.xml文件,会提示: No data source are configured ...
- 使用Three.js为QQ用户生成3D头像阵列
东西其实比较简单,就是输出某一范围内QQ账号的3D头像 涉及的技术主要是Three.js的基本使用 而后通过腾讯的接口异步并发请求QQ用户头像,Canavs作图生成Texture应用在球体上 需要注意 ...
- redis(五)
发布订阅 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的 ...
- ssm框架出现的常见问题
1:自己写的代码测试的时候显示用户过期,需要释放拦截器,并配置权限允许 2:Servlet.service() for servlet [springmvc] in context with path ...
- Set集合架构和常用实现类的源码分析以及实例应用
说明:Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的). (01) Set 是继承于Collection的接口.它是一个不允许 ...
- Python基础-内置函数、模块、函数、json
内置函数 1.id()返回对象的内存地址: 2. type() 返回对象类型: 3.print()打印输出: 4. input()接受一个标准输入数据,返回为string类型: 5. list() ...
- pygame-KidsCanCode系列jumpy-part6-主角挂掉重新开始
游戏的虚拟世界中,最让人happy的一个因素就是主角挂了,而且重来,只要restart就行了,不象现实中人的生命只有1次.回顾上节的效果,如果方块向下落时,挡板没接住,整个游戏就跪了: 如果我们希望方 ...
- PMM 对MYSQL 的监控配制
系统选择: centos 7.2 关闭防火墙: systemctl stop firewalld.service systemctl disable firewalld.s ...
- SpringCloud无废话入门01:最简SpringCloud应用
1.创建Parent Parent很简单,创建一个空的maven项目,pom如下: <?xml version="1.0" encoding="UTF-8" ...