阿里对象存储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中的CMS的涵义
Mar 11 PHP
php socket方式提交的post详解
Jul 19 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
php动态添加url查询参数的方法
Apr 14 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 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
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
js实现随机数小游戏
2019/06/28 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
汽车专业毕业生推荐信
2013/11/12 职场文书
司机辞职报告范文
2014/01/20 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
中学生个人自我评价
2014/02/06 职场文书
课内比教学心得体会
2014/09/09 职场文书
2014年文秘工作总结
2014/11/25 职场文书
综合素质评价自我评价
2015/03/06 职场文书
会计岗位工作总结
2015/08/12 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python