阿里对象存储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 编写的日历
Oct 09 PHP
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
图书管理程序(三)
Oct 09 PHP
php5 mysql分页实例代码
Apr 10 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
微信公众平台天气预报功能开发
Jul 06 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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
PHP使用数组实现队列
2012/02/05 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
Python实现全角半角转换的方法
2014/08/18 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
电子商务网站的创业计划书
2014/01/05 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
委托书模板
2014/04/04 职场文书
关于安全的广播稿
2014/10/23 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
Python 正则模块详情
2021/11/02 Python
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android