阿里对象存储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 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
php5数字型字符串加解密代码
Apr 24 PHP
ThinkPHP写第一个模块应用
Feb 20 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 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
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
javascript去除空格方法小结
2015/05/21 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
详解Python迭代和迭代器
2016/03/28 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
python中的print()输出
2019/04/12 Python
Python中拆分字符串的操作方法
2019/07/23 Python
python实现图片横向和纵向拼接
2020/03/05 Python
对python中return与yield的区别详解
2020/03/12 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
phpquery中文手册
2021/03/18 PHP
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
关心下一代工作先进事迹
2014/08/15 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
centos7安装mysql5.7经验记录
2022/05/02 Servers