阿里对象存储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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
PHP 配置文件中open_basedir选项作用
Jul 19 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
yii操作session实例简介
Jul 31 PHP
PHP合并静态文件详解
Nov 14 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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 unset全局变量运用问题的深入解析
2013/06/17 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
jquery自定义表格样式
2015/11/23 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
Python读取键盘输入的2种方法
2015/06/16 Python
python类的继承实例详解
2017/03/30 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python使用requests.session模拟登录
2019/08/09 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
Java的类与C++的类有什么不同
2014/01/18 面试题
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
村官学习十八大感想
2014/01/15 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
结婚仪式主持词
2015/06/29 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
springboot如何初始化执行sql语句
2021/06/22 Java/Android
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏