阿里对象存储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 相关文章推荐
在PHP中利用XML技术构造远程服务(上)
Oct 09 PHP
支持oicq头像的留言簿(一)
Oct 09 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
php图片上传类 附调用方法
May 15 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 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
第一节--面向对象编程
2006/11/16 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
php生成html文件方法总结
2014/12/01 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
python表格存取的方法
2018/03/07 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
简单了解python代码优化小技巧
2019/07/08 Python
python函数的万能参数传参详解
2019/07/26 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
python之yield和Generator深入解析
2019/09/18 Python
python实现IOU计算案例
2020/04/12 Python
Python字符串三种格式化输出
2020/09/17 Python
宿舍卫生检讨书
2014/01/16 职场文书
学生个人总结范文
2015/02/15 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js