阿里对象存储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下把数组保存为文件格式的实例应用
Feb 08 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
php获取访问者IP地址汇总
Apr 24 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 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
E路文章系统PHP
2006/12/11 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
js 数值项目的格式化函数代码
2010/05/14 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
py2exe 编译ico图标的代码
2013/03/08 Python
Python json模块使用实例
2015/04/11 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
非常详细的C#面试题集
2016/07/13 面试题
学生会招新策划书
2014/02/14 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
出纳岗位职责范本
2015/03/31 职场文书
百年孤独读书笔记
2015/06/29 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
浅谈JavaScript作用域
2021/12/06 Javascript
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
python中urllib包的网络请求教程
2022/04/19 Python