阿里对象存储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 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
PHP远程采集图片详细教程
Jul 01 PHP
php获取随机数组列表的方法
Nov 13 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
PHP内存使用情况如何获取
Oct 10 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP html_entity_decode()函数讲解
Feb 25 PHP
laravel框架与其他框架的详细对比
Oct 23 PHP
php模拟实现斗地主发牌
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
无线电的诞生过程
2021/03/01 无线电
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
sina的lightbox效果。
2007/01/09 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
vue-router 按需加载 component: () => import() 报错的解决
2020/09/22 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
Python 函数返回值的示例代码
2019/03/11 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
python实现飞船大战
2020/04/24 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
音乐教师求职信
2014/06/28 职场文书
机动车登记业务委托书
2014/10/08 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
小学感恩主题班会
2015/08/12 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang