阿里对象存储OSS在laravel框架中的使用方法


Posted in PHP onOctober 13, 2019

最近比较忙,也没来得及写博客。加上最近也确实没有接触到什么新技术,有点尴尬。。。

在昨天算是第一次接触对象存储这个东西,研究了一天,算是在项目中走得通了,所以在此分享给大家,是最基础的OSS上传图片部分,希望能自己以后能少踩坑,也希望能帮助到大家。

首先呢,现在百度出来的,基本都是laravel大神自己封装的composer包,可惜我实在是不能用,所以只能老老实实的在项目中引入SDK了。。。

1、引入阿里的SDK文件

阿里对象存储OSS在laravel框架中的使用方法

如图所示,其实我也不知道该放哪里合适,不过laravel的好处是命名空间比较好使,所以我直接把SDK重命名为OSS,然后目录路径为:App\Helpers\OSS

2、就是修改命名空间,主要是你能用得上的文件,大概有7-8个,把命名空间都定义好

3、修改配置文件,config.php,这个是SDK中的配置文件,需要把相应的配置写清楚

阿里对象存储OSS在laravel框架中的使用方法

(坑:endpoint这个部分,前面一定不要加你的bucket,不然就重复了。。。例如,我的endpoint是

'oss-cn-shanghai.aliyuncs.com'
)

4、都配置的差不多了,接下来就是上传文件了

public static function uploadOne($filename)
{
 $file = \Illuminate\Support\Facades\Request::file($filename);
 if (!$file) {
 exit("请上传图片");
 }
 // 文件是否上传成功
 if ($file->isValid()) {

 // 获取文件相关信息
 $originalName = $file->getClientOriginalName(); // 文件原名
 $ext = $file->getClientOriginalExtension(); // 扩展名
 $realPath = $file->getRealPath(); //临时文件的绝对路径
 $type = $file->getClientMimeType(); // image/jpeg
 $content = date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $ext;

 require_once(base_path() . '/app/Helpers/Oss/autoload.php');

 $bucket = Config::OSS_TEST_BUCKET;
 $accessKeyId = Config::OSS_ACCESS_ID;
 $accessKeySecret = Config::OSS_ACCESS_KEY;
 $endpoint = Config::OSS_ENDPOINT;
 $ossClient = Common::getOssClient();
 /*var_dump($ossClient);
 exit;*/
 $object = "user/" . $content;
 $filePath = $file;
 $result = $ossClient->UploadFile($bucket, $object, $filePath);
 if (!$result) {
  exit("上传图片失败");
 }
 return $content;
 }
}

上代码,主要从require_once开始的,引入SDK的加载文件,然后把各项配置通过config引入进来。

$object是你要存储的文件。比如楼主这里,就是相当于存储在bucket下的user文件下。然后通过

$filePath = $file来获得图片的内容,使用UploadFile方法进行上传。然后看返回值,成功即可。

5、遇到的坑:首先是SDK中的autoload.php一直报错,

function classLoader($class)
{
 $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
 $file = __DIR__ . DIRECTORY_SEPARATOR .'src'. DIRECTORY_SEPARATOR . $path . '.php';
 if (file_exists($file)) {
 require_once $file;
 }
}
/*spl_autoload_register('classLoader');*/

像这样的,我就直接注释了,也没什么后果,不过在后面可能会用得上吧,需要继续研究

其次就是上传的时候遇到的小问题了,这个根据错误提示修改即可,一般来说按我的走,能实现基本的上传图片,如果是上传文件的话,直接修改上传方法:$ossClient->putobj()就可以了

总结:我这个只是最基础的后台上传。未来做APP上传的时候,肯定是需要ajax先获取一个加密码,然后再url中加上这个加密码进行识别,,还有就是图片的删除等问题,仍需研究。。。以后如果研究好了,就再分享给大家。

以上这篇阿里对象存储OSS在laravel框架中的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
生成缩略图
Oct 09 PHP
PHP array_push 数组函数
Dec 26 PHP
zend framework配置操作数据库实例分析
Dec 06 PHP
php实现分页工具类分享
Jan 09 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
php实现求相对时间函数
Jun 15 PHP
WordPress后台中实现图片上传功能的实例讲解
Jan 11 PHP
Laravel中的Auth模块详解
Aug 17 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 PHP
PHP实现简易用户登录系统
Jul 10 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 #PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 #PHP
laravel实现上传图片的两种方式小结
Oct 12 #PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 #PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 #PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 #PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 #PHP
You might like
php的curl实现get和post的代码
2008/08/23 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
javascript数组使用调用方法汇总
2007/12/08 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Python for i in range ()用法详解
2020/09/18 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
联想台湾官网:Lenovo TW
2018/05/09 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
活动策划邀请函
2014/02/06 职场文书
采购意向书范本
2014/03/31 职场文书
目标责任书范文
2014/04/14 职场文书
公司合并协议书范本
2014/09/30 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers